여행하는 정육면체

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

문제

반다이라는 작은 행성에서, 우주선 타다미가와의 착륙대는 행성 표면의 평평한 구역 위를 굴러다니는 색색의 정육면체를 발견했고, 그 구역을 침대(bed)라고 이름 붙였다. 정육면체는 침대의 어떤 위치에 나타나 한동안 이동하다가 사라진다. 과학 장교 앨리사 오가와 중위는 정육면체가 이동하는 규칙을 알아냈다.

침대는 같은 크기의 정사각형들로 채워진 직사각형 구역이다. 정확히 한 칸은 빨강, 한 칸은 초록, 한 칸은 파랑, 한 칸은 청록(cyan), 한 칸은 자홍(magenta), 한 칸은 노랑이다. 한 칸 이상은 흰색이고, 나머지 칸은 모두 검정이다.

정육면체는 먼저 흰색 칸 위에 나타난다. 각 면의 색은 다음과 같다. 윗면 빨강, 아랫면 청록, 북쪽 초록, 남쪽 자홍, 동쪽 파랑, 서쪽 노랑.

한 걸음마다 정육면체는 아랫면의 네 모서리 중 하나를 축으로 굴러 인접한 칸으로 넘어간다. 유채색 칸(빨강, 초록, 파랑, 청록, 자홍, 노랑)으로 굴러갈 때는, 구른 뒤의 윗면 색이 그 칸의 색과 같아야 한다. 흰색 칸으로 굴러갈 때는 그런 제약이 없다. 정육면체는 검정 칸으로는 절대 굴러갈 수 없다.

이동하는 동안 정육면체는 각 유채색 칸을 한 번만 방문할 수 있고, 흰색 칸은 몇 번이든 방문할 수 있으며, 검정 칸은 절대 방문할 수 없다. 마지막 유채색 칸을 방문하면 정육면체는 사라진다. 유채색 칸을 방문해야 하는 순서는 이동을 시작하기 전에 이미 알려져 있다.

그 순서가 주어질 때, 정육면체가 여섯 유채색 칸을 그 순서대로 모두 방문하는 데 필요한 최소 걸음 수를 구하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

w d
c(1,1) ... c(w,1)
...
c(1,d) ... c(w,d)
v1v2v3v4v5v6

첫째 줄에는 두 양의 정수 $w$와 $d$가 공백으로 구분되어 주어진다. 다음 $d$개의 줄에는 공백 없이 $w$개의 문자로 이루어진 문자열이 주어진다. 각 문자 $c(i,j)$는 r, g, b, c, m, y, w, k(빨강, 초록, 파랑, 청록, 자홍, 노랑, 흰색, 검정) 중 하나이거나 기호 #이다. r, g, b, c, m, y#은 각 데이터셋에서 정확히 한 번씩만 나타난다. 마지막 줄은 여섯 글자짜리 문자열 $v_1v_2v_3v_4v_5v_6$으로, "rgbcmy"의 순열이다.

$w$는 침대의 너비(동서 길이), $d$는 깊이(남북 길이)이며 단위는 칸이다. 둘 다 $30$을 넘지 않는다. 문자 $c(1,1)$은 북서쪽 모서리, $c(w,1)$은 북동쪽, $c(1,d)$는 남서쪽, $c(w,d)$는 남동쪽 칸에 해당한다. 문자가 글자이면 그 칸의 색을 나타내고, #이면 그 칸은 흰색이며 정육면체의 시작 위치이다.

문자열 $v_1 \ldots v_6$은 방문할 색의 순서를 나타낸다. 정육면체는 $v_1, v_2, \ldots, v_6$ 색의 칸을 이 순서대로 방문해야 한다.

공백으로 구분된 두 개의 $0$이 있는 줄이 입력의 끝을 나타낸다.

출력

각 데이터셋에 대해, 최소 걸음 수를 한 줄에 출력한다. 그런 이동이 불가능하면 unreachable을 출력한다.