게으른 고양이

아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

집의 지도는 n×nn \times n 격자로 주어진다. 아래는 4×44 \times 4 지도의 예다.

BF
XXF
FXXF
S

벽은 'X', 먹이는 'F', 하나뿐인 침대는 'B'로 나타낸다. 고양이는 'S' 칸에서 출발하고, 'S'는 격자 어느 칸에나 놓일 수 있다. 고양이는 상하좌우로 한 칸씩만 움직이며 'X' 칸에는 들어가지 못한다. 모든 먹이를 먹고 침대에 도착하는 데 필요한 최소 이동 횟수를 구하라.

입력

첫째 줄에 격자의 크기 nn이 주어진다. (2n302 \le n \le 30)

다음 nn개 줄에는 각각 문자 nn개가 주어지고, 각 문자는 그 칸의 상태를 나타낸다. 침대는 'B', 먹이는 'F', 벽은 'X', 빈 칸은 숫자 0, 고양이가 출발하는 칸은 'S'다. 알파벳은 모두 대문자다. 'B'와 'S'는 각각 한 번씩 나오고, 'F'는 적어도 한 번, 많아야 열 번 나온다.

출력

모든 먹이를 먹은 뒤 침대에 도착하는 데 필요한 최소 이동 횟수를 한 줄에 출력한다. 모든 먹이를 먹고 침대까지 가는 방법이 없으면 대신 -1을 출력한다.