Illiteracy

면접 대비

시간 제한5초메모리 제한512 MB

요약
A~F로 이루어진 8칸 아이콘 배열에서 클릭이 전체 배열을 정해진 규칙으로 변형할 때 시작 배열을 목표 배열로 바꾸는 최소 클릭 횟수를 구하고 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
BFS, 그래프, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Illiteracy는 Le Sio가 만든 간단한 퍼즐 게임이다. 대회가 끝난 뒤에는 https://le-slo.itch.io/illiteracy에서 플레이할 수 있다. 게임은 여덟 개의 아이콘으로 이루어진 한 줄로 구성된다. 실제 아이콘은 매우 예술적이지만, 편의상 아이콘을 대문자 A부터 F로 표기한다. 어떤 아이콘을 클릭하든, 클릭한 아이콘의 종류와 그 아이콘이 줄에서 차지하는 위치에 따라 다른 아이콘들에 고유한 효과가 발생한다. 대부분의 아이콘은 다른 아이콘의 종류를 회전시킨다. 회전은 A를 B로, B를 C로, C를 D로, D를 E로, E를 F로, F를 다시 A로 바꾼다.

아이콘의 종류와 줄에서의 위치 x (1 ≤ x ≤ 8)에 따라 아이콘을 클릭했을 때 일어나는 일은 다음과 같다:

종류효과
A바로 왼쪽과 오른쪽(x − 1과 x + 1 위치)의 아이콘을 회전시킨다. 존재하지 않는 아이콘은 무시한다(x = 1 또는 8일 때).
B아이콘이 줄의 양 끝에 있으면 아무 일도 일어나지 않는다. 그렇지 않으면 x + 1 위치의 아이콘을 x − 1 위치의 현재 아이콘과 같은 종류로 바꾼다.
C9 − x 위치의 아이콘을 회전시킨다.
Dx 위치와 줄의 양 끝 중 가까운 쪽 사이에 있는 모든 아이콘을 회전시킨다. (x가 양 끝 중 하나이면 아무 일도 일어나지 않으며, x 위치의 아이콘 자체는 바뀌지 않는다.) 예를 들어 x = 3이면 x = 1과 2 위치의 아이콘이 회전한다. x = 5이면 6, 7, 8 위치의 아이콘이 회전한다.
E아이콘이 줄의 양 끝에 있으면 아무 일도 일어나지 않는다. 그렇지 않으면 y를 x 위치와 줄의 양 끝 중 가까운 쪽 사이에 있는 아이콘의 개수라고 하자. x − y와 x + y 위치의 두 아이콘을 회전시킨다. 예를 들어 x = 3이면 x = 1과 5 위치의 아이콘이 회전한다. x = 5이면 8과 2 위치의 아이콘이 회전한다.
Fx가 홀수이면 (x + 9)/2 위치의 아이콘을 회전시킨다. x가 짝수이면 x/2 위치의 아이콘을 회전시킨다.

아이콘의 시작 배열과 목표 배열이 주어졌을 때, 시작 배열을 목표 배열로 바꾸는 데 필요한 최소 클릭 횟수는 얼마인가?

입력

입력은 정확히 두 줄로 이루어지며, 각 줄은 여덟 개의 문자로 구성된다. 첫 번째 줄은 시작 아이콘 배열이고, 두 번째 줄은 목표 배열이다. 각 줄의 각 문자는 여섯 개의 대문자 A, B, C, D, E, F 중 하나이다.

출력

시작 배열에서 목표 배열로 가는 데 필요한 최소 아이콘 클릭 횟수를 나타내는 정수 하나를 출력한다. 불가능하면 -1을 출력한다.

힌트

아래 예시에서는 위쪽 배열에서 아래쪽 배열로 가는 최소 클릭 순서 하나를 보여준다. 캐럿은 이전 줄에서 어느 아이콘을 클릭해 다음 줄의 배열이 만들어졌는지 가리킨다. 왼쪽 순서는 2번의 클릭이 필요하고, 오른쪽 순서는 4번의 클릭이 필요하다.

ABCDEFCD        DCDAFCBA
   ^               ^
BCDDEFCD        DCEAACBA
     ^                ^
BCEDEFCD        DCEAACBC
                 ^
                DCEAACCC
                  ^
                ECEABCCC

예제5

  1. 예제 1

    입력
    ABCDEFCD
    BCEDEFCD
    
    예상 출력
    2
    
  2. 예제 2

    입력
    DCDAFCBA
    ECEABCCC
    
    예상 출력
    4
    
  3. 예제 3

    입력
    ABCDEFCD
    ABCDEFCD
    
    예상 출력
    0
    
  4. 예제 4

    입력
    ACFEFBEB
    EDBFEFDE
    
    예상 출력
    22
    
  5. 예제 5

    입력
    ABCDEFCD
    BBBBBBBB
    
    예상 출력
    9