1052: 致命陷阱Ⅱ

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:98 Solved:9

Description

        SYH昨晚又做了一个噩梦。他又梦见自己身处一个迷宫之中,更为可怕的是,他发现自己的身上绑着一个定时炸弹(PS:怎么又是这种定时的套路?)。幸运的是,这个迷宫里有出口,且出口的位置有一个炸弹解除器。所以SYH要想办法在炸弹不爆炸之前尽快走出迷宫并且解除身上的炸弹。

       一开始的时候,炸弹的倒计时被设置为6分钟。由于炸弹中装了振动引线,为防止炸弹爆炸,SYH不得不缓慢地移动,也就是每分钟他只能往上、下、左、右四个方向移动一格。此外,迷宫中有一些“炸弹重置装置”,如果能够找到这些装置,那么SYH可以将身上炸弹的倒计时重置为6分钟,当然,由于这个装置非常庞大,SYH不能带走这个装置。

       现在给定这个迷宫的布局以及SYH的初始位置,现在请你告诉他,如果要活着走出迷宫(保证他脱离迷宫前身上的炸弹不爆炸),最少需要多少时间



特殊说明:

1. 如果SYH在走到迷宫的瞬间,身上的炸弹倒计时变为0,此时也判定SYH不能活着走出迷宫。

2. 如果SYH在走到炸弹重置器的瞬间,身上的炸弹倒计时变为0,那么他不能够使用重置器。

3. 炸弹重置器有若干个而且可以被多次使用,并非“一次性”。

Input

输入文件名为 nightmare.in

输入有若干行:第一行为2个正整数N、M,分别代表地图的长和宽

       接下来有N行数字,每行有M个,以空格分隔,描述这个地图。

       地图说明:

       1. 数字0表示墙

       2. 数字1表示空地

       3. 数字2表示SYH的起始位置

       4. 数字3表示终点(出口)位置

       5. 数字4表示炸弹重置器的位置

Output

输出文件名为 nightmare.out

输出共有1行,表示逃离这个迷宫最少需要花费的时间。

如果无论怎么样都无法逃出迷宫,输出-1

Sample Input Copy

3 3
2 1 1
1 1 0
1 1 3

Sample Output Copy

4

HINT

【输入输出样例2】

nightmare.in

nightmare.out

4 8

2 1 1 0 1 1 1 0

1 0 4 1 1 0 4 1

1 0 0 0 0 0 0 1

1 1 1 4 1 1 1 3


-1



【输入输出样例3】

nightmare.in

nightmare.out

5 8

1 2 1 1 1 1 1 4

1 0 0 0 1 0 0 1

1 4 1 0 1 1 0 1

1 0 0 0 0 3 0 1

1 1 4 1 1 1 1 1


13



【样例解释】

       对于第三个样例,SYH必须先“绕”个路,使用(3,2)上的炸弹重置器,然后再往终点继续前进。



【数据范围】

       对于100%的数据3N 1000