UVA1714 Keyboarding
题目描述
## 题目背景
输入一条信息需要敲几下键?或许你会认为它相当于文本中的字符数,但只有在按键与字符一一对应时方才如此。对于小型设备来说,输入文本通常很麻烦。有些设备只提供几个按钮,比字符数量少得多。对于这样的设备,键入一个字符就需要一系列操作。
现在就有一套这样的输入机制:屏幕虚拟键盘,上面有一个光标,可以在键与键来回移动来选择字符。四个箭头按钮控制光标的移动,当光标的位置在合适的虚拟键上时,按确认按钮即可输入相应的字符,且在文本的末尾必须回车。
现在给你一段字符串,并且你只有「上、下、左、右,确认」这五个按钮。本题中,你会得到一个虚拟键盘布局。你的任务是确定键入给定文本所需的最少操作数,按下一个按钮即视为一次操作。虚拟键分布在一个矩形网格中,这样每个虚拟键占用网格中一个或多个相连的单元方格。光标初始均在左上角并可四向移动,且每次都沿该方向移到下一个不同字符的虚拟键。光标不能移动到无效的格上。
每个虚拟键与字符唯一对应,其由一个或多个方格组成,这些方格相连为一块区域。
输入格式
**本题有多组数据**。
对于每组数据:
第一行三个整数 $n,m,k$,分别为虚拟键盘网格的行数和列数。
接下来 $r$ 行,每行 $c$ 个字符,为大写字母、数字、横杠或星号(表示回车键)其中之一。
最后一行为一个非空字符串,是要输入的文本,最多有10000个除星号外的有效字符。
输出格式
对于每组数据,输出键入整个文本所需的最少操作数,**包括最后按下的回车**。
## 样例
### 样例输入
```text
4 7
ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ**
CONTEST
5 20
12233445566778899000
QQWWEERRTTYYUUIIOOPP
-AASSDDFFGGHHJJKKLL*
--ZZXXCCVVBBNNMM--**
--------------------
ACM-ICPC-WORLD-FINALS-2015
2 19
ABCDEFGHIJKLMNOPQZY
X*****************Y
AZAZ
6 4
AXYB
BBBB
KLMB
OPQB
DEFB
GHI*
AB
```
### 样例输出
```text
30
160
19
7
```
说明/提示

插图描述了一种经过30次操作后输入 `CONTEST` 的方式,红点表示按下该虚拟键。
#### 数据规模
- $1\le r,c\le50,|S|\le 100001\le r,c\le 50,|S|\le 10000$。
---
翻译: @QQzhi (UID:525682)