아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

여덟 조각 퍼즐

시간 제한1초메모리 제한256 MB

요약
주어진 3행 3열 보드를 목표 배치로 만드는 최소 이동 횟수를 구하고 도달할 수 없으면 impossible을 출력합니다.
난이도

보통10점 중 6점

유형
BFS, 최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

3행 3열 판에 1부터 8까지 번호가 붙은 정사각형 조각 여덟 개와 빈 칸 하나가 놓여 있다. 한 번의 이동은 빈 칸과 변을 맞댄 조각 하나를 빈 칸으로 밀어 넣는 것이다.

섞인 판이 주어지면 조각을 다음 모양으로 맞추어야 한다.

123
456
78#

여기서 #는 빈 칸이다. 각 판을 목표 모양으로 만드는 최소 이동 횟수를 구하고, 목표 모양을 만들 수 없으면 그 사실을 알리는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 nn이 주어진다. (1≤n≤1001 \le n \le 100) 그다음에 빈 줄이 하나 온다.

각 테스트 케이스는 시작 판을 나타내는 세 줄로 주어지고, 각 줄은 기호 세 개로 이루어진다. 테스트 케이스 사이에는 빈 줄이 하나씩 들어간다. 한 판에는 기호 1부터 8까지와 #가 정확히 한 번씩 나오며, #는 빈 칸을 뜻한다.

출력

각 테스트 케이스마다 목표 모양을 만드는 최소 이동 횟수를 한 줄에 하나씩 출력한다. 목표 모양을 만들 수 없으면 impossible을 출력한다.

예제2

  1. 예제 1

    입력
    2
    
    123
    4#5
    786
    
    123
    456
    87#
    
    예상 출력
    2
    impossible
    
  2. 예제 2

    입력
    1
    
    123
    456
    78#
    
    예상 출력
    0