당신은 프로그래밍 대회 여름 합숙 훈련에 참가하고 있다. 합숙은 도쿄 올림픽 센터라는 숙박 시설에서 열리며, 오늘이 마지막 날이다. 하필 당신이 참가자 전원의 방 청소 상태를 점검하는 일을 맡았다.
시설은 높이가 H, 너비가 W인 직사각형 구역이고, 정사각형 칸으로 나뉘어 있다. 행은 위에서 아래로 1번부터 H번까지, 열은 왼쪽에서 오른쪽으로 1번부터 W번까지 번호를 붙인다. i행 j열의 칸을 (i,j)로 쓴다. 두 칸이 변을 맞대고 있으면 두 칸은 서로 인접하다.
각 칸은 벽 칸이거나 바닥 칸이다. 벽 칸에는 아무도 들어갈 수 없다. 바닥 칸은 시설의 내부이고, 인접한 두 바닥 칸 사이는 누구나 이동할 수 있다. 바닥 칸은 여러 구역으로 나뉘고, 각 구역에는 알파벳 대문자 이름이 하나씩 붙는다(A, B, C, ...). 인접한 바닥 칸이 정확히 하나뿐인 바닥 칸을 방이라고 하고, 그렇지 않은 바닥 칸을 복도라고 한다.
다음 그림은 시설 하나를 나타낸 것이다. 벽 칸은 마침표 하나로 표시한다.
...................
.....AAABBBBBBB....
...A.AA.A...B.B..B.
..AAAAAAAABBBBBBBB.
...A..A.A.....B....
......A.......BBBB.
....A.AA..C.C...B..
...AAAAACCCCCCBBBB.
...A..A...C.C...B..
...................
이 그림에서 구역 A의 방은 7개, 구역 B의 방은 4개, 구역 C의 방은 4개다.
시설이 너무 넓어 혼자 다 돌 수는 없으므로, 당신은 합숙에 참가한 다른 사람에게 방 점검을 부탁했다. 이들을 직원이라고 부르자. 지금 칸 (s,t)에 직원 K명이 서 있고, 점검은 다음 순서로 진행한다.
직원은 모두 같은 순간에 출발해 동시에 움직인다. 따라서 작업에 걸리는 시간은 직원 한 명이 쓴 시간 중 가장 큰 값이다. 다음 대회가 시작하기 전에 점검을 마쳐야 하므로, 이 시간을 최소로 만들어야 한다.
첫째 줄에 세 정수 H, W, K가 주어진다(1≤H≤50, 1≤W≤50, 1≤K≤12). 둘째 줄에 네 정수 s, t, Tmove, Tcheck가 주어진다(1≤s≤H, 1≤t≤W, 1≤Tmove,Tcheck≤10000).
이어지는 H개의 줄에는 각각 문자가 정확히 W개씩 주어져 시설의 칸을 나타낸다. 이 줄들 중 i번째 줄의 j번째 문자는 칸 (i,j)가 벽 칸이면 마침표 하나이고, 벽 칸이 아니면 칸 (i,j)가 속한 구역을 나타내는 A부터 L까지의 대문자다.
입력은 다음을 모두 만족한다.
모든 방을 점검하는 데 필요한 최소 시간을 한 줄에 출력한다.