도토리 문자열
시간 제한2초메모리 제한1024 MB
스크랫은 시작 칸에서 출발해 문자열 s의 글자 순서대로 도토리를 모을 때 필요한 최소 이동 시간을 구합니다.
문제
다람쥐 스크랫은 나이가 들고 지혜로워졌다. 예전처럼 그 도토리 한 개를 쫓는 대신, 이제는 여러 종류의 도토리를 모으고 싶어 한다. 도토리 종류는 26가지이며 'a'부터 'z'까지의 소문자로 표시한다. 스크랫이 모으려는 이상적인 수집품은 문자열 로 주어지고, 의 번째 문자는 수집품의 번째 도토리 종류를 뜻한다.
스크랫이 있는 땅은 크기의 직사각형 격자다. 행은 위에서 아래로 1번부터 번까지, 열은 왼쪽에서 오른쪽으로 1번부터 번까지 번호를 매긴다. 는 행 열의 칸을 뜻한다. 스크랫은 처음에 칸에 있다. 칸에는 종류의 도토리만 있고, 그 수는 무한하다. 스크랫은 변을 공유하는 칸으로만 이동할 수 있으며, 한 번 이동할 때마다 정확히 1의 시간이 걸린다.
스크랫은 도토리를 에 적힌 순서대로만 줍는다. 예를 들어 가 ab이면 'a' 도토리보다 먼저 'b' 도토리를 주울 수 없다. 현재 서 있는 칸의 도토리를 줍는 데는 시간이 들지 않는다. 스크랫이 수집품 전체를 모으는 데 걸리는 최소 시간을 구하라.
입력
첫 줄에 땅의 크기를 나타내는 두 정수 과 이 주어진다 (). 둘째 줄에는 스크랫의 처음 위치를 나타내는 두 정수 와 가 주어진다 (, ).
이어지는 개의 줄에는 각각 정확히 개의 소문자 영문자가 주어진다. 번째 줄의 번째 문자는 칸에서 자라는 도토리 종류 이다. 모든 도토리 종류는 적어도 한 칸에 존재한다고 보장된다.
마지막 줄에는 이상적인 수집품의 도토리 종류 순서를 나타내는 소문자 문자열 가 주어진다 ().
출력
수집품 전체를 모으는 데 필요한 최소 시간을 한 줄에 출력한다.
힌트
첫 번째 예제에서 최적 경로는 첫 행의 'n'까지 12걸음에 가는 것이다. 그다음 한 칸 아래로 내려가 오른쪽에 나란히 있는 'u'와 't'를 줍는데, 이때 4걸음이 더 든다.
두 번째 예제에서 최적 경로는 다음 점들을 지난다. , 's'는 , 'q'는 , 'u'는 , 'i'는 , 'r'은 (두 번), 'e'는 , 'l'은 .