집의 지도는 n×n 격자로 주어진다. 아래는 4×4 지도의 예다.
| B | F | ||
| X | X | F | |
| F | X | X | F |
| S |
벽은 'X', 먹이는 'F', 하나뿐인 침대는 'B'로 나타낸다. 고양이는 'S' 칸에서 출발하고, 'S'는 격자 어느 칸에나 놓일 수 있다. 고양이는 상하좌우로 한 칸씩만 움직이며 'X' 칸에는 들어가지 못한다. 모든 먹이를 먹고 침대에 도착하는 데 필요한 최소 이동 횟수를 구하라.
첫째 줄에 격자의 크기 n이 주어진다. (2≤n≤30)
다음 n개 줄에는 각각 문자 n개가 주어지고, 각 문자는 그 칸의 상태를 나타낸다. 침대는 'B', 먹이는 'F', 벽은 'X', 빈 칸은 숫자 0, 고양이가 출발하는 칸은 'S'다. 알파벳은 모두 대문자다. 'B'와 'S'는 각각 한 번씩 나오고, 'F'는 적어도 한 번, 많아야 열 번 나온다.
모든 먹이를 먹은 뒤 침대에 도착하는 데 필요한 최소 이동 횟수를 한 줄에 출력한다. 모든 먹이를 먹고 침대까지 가는 방법이 없으면 대신 -1을 출력한다.