#SM08L04P03. SM.08.L04.P03.魔兽世界

SM.08.L04.P03.魔兽世界

题目描述

小 A 在 WOW 中是个小术士。作为一名术士,不会单刷副本是相当丢脸的。所谓单刷副本就是单挑 BOSS 了,这么有荣誉感的事小 A 怎么会不做呢?

于是小 A 来到了厄运之槌开始了单刷。小 A 看了看,厄运之槌的地图是一个 N×MN × M 的矩形(NM100N,M \le 100),上面遍布了小怪和传送门。其中 11 表示有小怪,00 表示无小怪,大写字母表示传送门,传送门是一对相同的大写字母,如遇到一个大写 A 则马上可以到达另一个大写 A 的位置。(次数无限,但每次进入传送点只传送过去,不会再传送回来,数据保证每个传送门有且仅有相对应的另一个传送门):

![img](file://monster1.png)

而入口在左上方(111,1),BOSS却躲在右下方(NMN,M)。小 A 非常急切的想要完成单刷然后去向其他那些战士啊盗贼啊不会单刷的职业炫耀炫耀,所以呢,小 A 绝不会在小怪身上浪费时间(当然是绕开他们),并且想通过传送门尽快到达 BOSS 身边。看啊看,想啊想,还是没找出最快的路。终于,灵机一动,想什么啊,编程呗!

输入格式

第 1 行 2 个数据:NMN,M

下面 NN 行,每行 MM 个数(入口点和 BOSS 点无怪和传送门),表示厄运之槌的地图。地图数据之间无空格。每步只能走一格,方向上下左右。左上角为入口点,右下角为出口点。

输出格式

一个整数,表示小 A 最少需要走多少步。如果小 A 不能走到目标,则输出“No Solution.”。

样例

3 4
0000
00A0
A000
4

样例 1 说明

![img](file://monster2.png)

路线如图:即第一步从(1,1)到(2,1);第二步从(2,1)到(3,1)并马上传送到(2,3);第三步从(2,3)到(2,4);第四步从(2,4)到(3,4)。

4 6
010100
01A100
011101
0000A0
10

样例 2 说明

路线如下:(1,1)-(2,1)-(3,1)-(4,1)-(4,2)-(4,3)-(4,4)-(4,5)(2,3)-(1,3)-(2,3)(4,5)-(4,6)