샷큐브
시간 제한10초메모리 제한256 MB
가장자리에서 쏘아 큐브 무리를 막힐 때까지 밀어서 9개를 3x3 정사각형 안에 모으는 최소 사격 횟수를 구합니다.
문제
비디오 게임 Tales of Graces에는 샷큐브라는 퍼즐 미니게임이 있다. 격자 위에 큐브 9개가 놓여 있고, 이 큐브를 모두 정사각형 모양으로 모으는 것이 목표다. 원래 게임에서는 이 정사각형이 격자 정중앙에 있어야 하지만, 이 문제에서는 격자 안 어디에 있어도 된다.
큐브를 움직이는 방법은 격자 바깥에서 쏘는 것뿐이다. 행 하나 또는 열 하나를 골라 그 바깥에서 안쪽으로 쏜다. 그 줄에서 격자 가장자리에 붙은 칸에 큐브가 있어야 쏠 수 있고, 그 칸에서 시작해 진행 방향으로 빈틈 없이 이어진 큐브 덩어리가 통째로 함께 밀린다. 덩어리는 맨 앞 큐브가 다른 큐브에 막힐 때까지 직진하다가 그 큐브 바로 앞 칸에서 전부 멈춘다. 진행 방향에 덩어리를 멈춰 세울 큐브가 없으면 그쪽으로는 쏠 수 없다. 한 번 쏘면 덩어리는 항상 한 칸 이상 움직인다.
큐브 9개를 정사각형으로 모으는 데 필요한 최소 발사 횟수를 구하는 프로그램을 작성하시오.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. ()
각 테스트 케이스는 7개의 줄로 이루어지고, 각 줄은 7개의 문자로 이루어진다. 각 문자는 . 또는 X이며, .은 빈 칸, X는 큐브가 놓인 칸을 뜻한다. 모든 테스트 케이스에 큐브는 정확히 9개 있다. 테스트 케이스 사이에는 빈 줄이 하나씩 들어간다.
출력
각 테스트 케이스마다 큐브 9개를 정사각형으로 모으는 데 필요한 최소 발사 횟수를 한 줄에 하나씩 출력한다. 모을 수 없으면 대신 -1을 출력한다.