在约翰的厨房里吃了太多的水果后,贝茜做了一些非常奇怪的梦。
在她最近的梦中,她被困到了一个迷宫中,迷宫可视为 N×M 的方格矩阵。
开始时她位于左上角的格子,出口在右下角的格子。
当她位于某个格子中时,她可以沿四个基本方向中的任意一个移动至相邻格子中。
可是等等!
每个格子都有一种颜色,每种颜色都有不同的属性!
贝茜一想到这个就感到头疼:
(如果你对紫色格子感到困惑,样例将说明其具体用法。)
每从一个格子移动或滑动至另一个格子,算作一次移动。
请帮助贝茜在尽可能减少移动次数的情况下,到达出口。
第一行包含两个整数 N 和 M。
接下来 N 行每行包含 M 个整数,表示迷宫:
左上角和右下角的数字一定是 1。
输出贝茜到达出口所需的最少移动次数。
如果无法到达出口,则输出 −1。
1≤N,M≤1000
4 4
1 0 2 1
1 1 4 1
1 0 4 0
1 3 1 1
10
在此样例中,贝茜向下走一个格子,向右走两个格子(然后向右滑动一个格子),向上走一个格子,向左走一个格子,向下走一个格子(向下再滑动两个格子),最后向右走一个格子。
总共 10 次移动(下右右右上左下下下右)。