U555645 小明走迷宫
题目背景
话说,小明终于走出了迷宫,找到了回别墅的路线。可是等他们回到别墅的时候才发现,捣蛋鬼晓晓趁他不在把别墅摧毁了,并抓走了小明。小明被关押在一个迷宫的牢房里。又是迷宫!!!这次小明彻底愤怒了!
题目描述
小明把关押他们的迷宫里的情况告诉了你:
- `S` 点表示迷宫的入口;
- `T` 点表示迷宫中牢房的位置;
- `.`表示空地,可以通过;
- `#`表示墙,不能直接通过;
- `K`表示陷阱,一旦进入就必死无疑。
每次只能向上下左右四个方向移动,每移动一个单位距离需要耗费 $1$ 个单位时间。当他们在迷宫中遇到墙的阻碍时,也能破墙进入,不过破墙的过程会花费 $1$ 个单位时间(算上移动时间一共是 $2$ 个单位时间)。现在请你计算一下他们最少需要多少时间才能找到迷宫的牢房。
输入格式
第一行输入两个整数 $n$ 和 $m$,分别代表迷宫的行数和列数。
接下来 $n$ 行,每行有 $m$ 个字符 `S`、`T`、 `.`、`#` 或 `K`,用来表示迷宫地图。
输出格式
输出一个整数,表示找到迷宫出口的最短时间;如果不能找到出口则输出 `-1`。
说明/提示
### 样例解释
小明先往右破墙(耗费 $2$ 个单位时间),再往右走(耗费 $1$ 个单位时间),再往右破墙(耗费 $2$ 个单位时间),接着往下走(耗费 $1$ 个单位时间),再往下走(耗费 $1$ 个单位时间),最后往左走(耗费 $1$ 个单位时间)。
最后耗费的时间总和为:$2 + 1 + 2 + 1 + 1 + 1 = 8$。
### 数据范围
对于所有的数据,保证 $2 \le m \le n \le 20$。