페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2898

가상 키보드 입력 4s 256MB

문제

아래 그림과 같은 가상 키보드와 조정 버튼을 생각해보자. 그림의 왼쪽 부분은 가상 키보드이고 오른쪽 부분은 실제 키보드 버튼이다.

사용자가 텍스트를 입력하기 위해서는 가상 키보드의 키를 직접 누르는 대신에 실제 키보드 버튼을 이용해야 한다. 가상 키보드에는 "커서"가 있는데, 처음에는 커서가 왼쪽 맨 위 키의 위치에 있다. 우리는 실제 키보드에 있는 네 개의 화살표 버튼을 눌러서 커서를 움직일 수 있다. 화살표를 한 번 누르면 다른 글자가 나올 때까지 그 방향으로 이동하지만, 그런 글자가 없으면 이동하지 않는다. 커서가 적절한 키 위에 있을 때 실제 키보드의 선택(SEL) 버튼을 누르면 해당 문자가 선택되고 텍스트의 끝에 추가된다. 이러한 방식으로 주어진 텍스트의 문자들을 입력할 수 있으며 텍스트를 종료하려면 사용자가 Enter 키를 찾아 선택해야 (즉, 선택 버튼을 눌러야) 한다.

그림 1. 가상 키보드와 실제 키보드의 예시

입력 예 1에서 주어진 가상 키보드에서 CONTEST라는 텍스트를 입력하는 방법 중 하나로는 위 그림에서 빨간색으로 표시한 부분이 있다. 그림에서 붉은색 화살표는 이동한 것을 나타내며, 은 SEL키를 누른 것을 의미한다. CONTEST를 입력하기 위해 실제 키보드 버튼을 30번 눌렀다는 것을 알 수 있다.

가상 키보드 레이아웃과 목표 텍스트가 주어지면, 텍스트를 입력하기 위해 실제 키보드 버튼을 최소 몇 번 눌러야 하는 지 구하여라.


입력

첫 행에는 자판의 행과 열을 나타내는 R, C ( 1 ≤ R, C ≤ 50)이 공백을 구분하여 입력된다. 

다음 R행 C열에 걸쳐 자판 정보가 입력된다. 자판 구성문자는 알파벳 대문자, 숫자, ‘-’, ‘*’로만 이루어진다. ('*'는 Enter키를 나타낸다.)

같은 문자가 상하좌우로 연결된 영역이 하나의 가상 키보드 버튼이 되며, 각 문자를 입력할 수 있는 가상 키보드 버튼은 최대 1개 존재한다.

마지막 행에 타이핑하고자 하는 텍스트가 입력된다. 텍스트는 알파벳대문자, 숫자, ‘-’로 이루어져 있으며 길이는 1자 이상 10,000자 이하이며, 주어진 가상 키보드를 이용해 타이핑할 수 있다.


출력

마지막 Enter 키를 포함하여 전체 텍스트를 입력하는 데 필요한 최소 키보드 입력 수를 출력한다.


예제 #1

4 7

ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ**
CONTEST
30

예제 #2

5 20

12233445566778899000
QQWWEERRTTYYUUIIOOPP
-AASSDDFFGGHHJJKKLL*
--ZZXXCCVVBBNNMM--**
--------------------
ACM-ICPC-WORLD-FINALS-2015
160

예제 #3

2 19

ABCDEFGHIJKLMNOPQZY
X*****************Y
AZAZ
19

예제 #4

6 4

AXYB
BBBB
KLMB
OPQB
DEFB
GHI*
AB
7

출처

ACM-ICPC World Finals 2015 F

로그인해야 코드를 작성할 수 있어요.