#P2127. PushBox

PushBox

相信大家都玩过推箱子吧http://www.4399.com/flash/15332_4.htm,有一天Ly和Tlp也开心的玩了起来,但是推箱子太难了,以至于他们都玩不下去了,但是Ly不想在Tlp面前丢面子,所以他想请你帮帮他。

推箱子的地图是n*m的方格,每个格子都有一个值,0代表空格,可以通过;1代表墙,不能通过;2代表箱子的位置;3代表箱子需要推到的位置,4代表你的初始位置(地图上最多有一个箱子,最多有一个目的地)。

现在你需要告诉Ly箱子从原始地点到目的地的最少步骤,无法到达则输出-1.

Input

多组测试数据,EOF结尾
第一行有两个数n,m(1<m,n<8),分别代表行和列
然后是n*m的地图,由0->4组成

Output

能到达请输出最少步数,否则输出-1;
每组输出各占一行。

Sample Input

3 3
1 3 1
1 2 1
1 4 1

Sample Output

1

HINT

Source