编程题
翻木块游戏
## 题目描述
翻木块游戏规则为:在由方格组成的棋盘上,有一个孔和一个1×1×2大小的长方体木块,可以通过上、下、左、右方向键翻动木块,如以下图(a)所示;当木块竖立在孔的位置,则木块从孔中落下,同时游戏成功结束。例如,在图(b)中,如果再按下向右的方向键,则木块顺利地从孔落下,游戏成功。游戏过程中如果木块压过孔的位置但不是竖立在孔的位置,这时不会落下。

(a)

(b)
翻木块游戏的难度在于棋盘是不规则的。在本题中,为了降低难度,假设棋盘由n行×m列个方格组成,棋盘中除了木块和孔外,没有任何障碍物,如下图所示。给定棋盘大小和方块的初始位置,计算至少需要翻动多少次才能使得木块从孔中落下。

## 输入描述
输入文件包含多个测试数据。每个测试数据占两行:第1行为2个不超过10的正整数n和m,以及2个整数xh和yh,表示孔所在的行号和列号(均从1开始计起);第2行表示木块的初始位置,如果第1个整数为2,则后面有4个整数x1, y1, x2, y2,表示木块初始时占据两个方格,这4个整数表示两个方格的位置;如果第1个整数为1,则后面有2个整数x1, y1,表示木块初始时占据一个方格,这2个整数表示这个方格的位置(即木块是竖立着的)。n=m=0,代表输入结束。
样例输入中两个测试数据所描绘的游戏分别如上图(a)和(b)所示,其中浅色背景阴影的方格表示孔的位置,深色背景阴影的方格表示木块的初始位置。
## 输出描述
对每个测试数据,输出求得的最小的翻动次数。
## 样例输入
```txt
4 4 2 3
2 1 1 1 2
4 5 4 5
1 1 1
0 0
```
## 样例输出
```txt
2
5
```