미궁
면접 대비시간 제한2초메모리 제한1024 MB
막힌 칸이 있는 h개 층의 3차원 격자에서 꼭대기 층의 시작점부터 바닥 층의 목표점까지 이동 시간의 최솟값을 구한다. 가로 이동과 아래층으로 바닥을 깨고 떨어지는 데 각각 5초가 걸린다.
문제
눈을 뜬 페르시아의 왕자는 자파의 지하 미궁 맨 위층에 있다는 것을 알게 되었다. 미궁은 위아래로 놓인 개의 층으로 이루어져 있다. 각 층은 개의 칸으로 나뉜 직사각형 모양의 바닥이다. 일부 칸에는 천장을 받치는 기둥이 서 있어서 왕자는 그런 칸으로 갈 수 없다.
왕자는 같은 층의 두 칸이 한 변을 공유하고 두 칸 모두 기둥이 없으면 그 사이를 이동할 수 있다. 이 이동에는 초가 걸린다.
자파의 미궁은 바닥이 아주 얇아서, 아래층의 같은 위치에 기둥이 없기만 하면 왕자는 발로 세게 밟아 바닥을 부술 수 있다. 바닥이 부서지면 왕자는 수평으로 움직이지 않고 한 층 아래로 떨어진다. 이 동작에도 초가 걸린다. 물론 왕자가 이미 맨 아래층에 있다면 발밑의 바닥은 부서지지 않는다.
맨 아래층의 한 칸에서는 사악한 자파와의 결혼을 거부한 공주가 왕자를 기다리고 있다. 왕자가 공주를 찾는 데 걸리는 시간이 최소가 되도록 도와주자.
입력
첫째 줄에 미궁의 높이와 가로, 세로 크기를 나타내는 자연수 , , 이 주어진다 (). 그다음 줄부터 개의 블록이 맨 위층에서 맨 아래층 순서로 주어진다.
각 블록은 개의 문자로 이루어진 개의 줄로 구성된다. <<.>>(점)은 빈 칸, <<o>>(라틴 소문자 <<o>>)는 기둥이 있는 칸, <<1>>은 여행을 시작할 때 왕자가 있는 빈 칸, <<2>>는 공주가 갇혀 있는 빈 칸을 나타낸다.
문자 <<1>>과 <<2>>는 입력 파일에 각각 정확히 한 번씩 나타난다. 문자 <<1>>은 맨 위층을 나타내는 블록에, 문자 <<2>>는 맨 아래층을 나타내는 블록에 있다.
인접한 블록 사이에는 빈 줄이 하나 있다.
출력
왕자가 공주를 찾는 데 필요한 최소 시간을 초 단위로 출력한다. 선이 항상 악을 이기므로 왕자가 공주를 찾을 수 있다는 것이 보장된다.