编程题
### 问题描述
乐乐有一个 $N$ 行 $M$ 列的矩阵,他有一个高度为 $H$,宽度为 $W$ 的矩形。最初,矩形的左上角在单元格 $(S_r, S_c)$ 中。
在每一步中,他可以将矩形向上/向下移动一行,或向左/向右移动一列,而不离开矩阵。此外,有一些单元格是禁止的,这意味着矩形不允许与它们重叠。
现在,乐乐想找到将矩形的左上角带到单元格 $(F_r, F_c)$ 中所需的最小步数。
请注意:矩形位于矩阵边界内,并且不与任何禁止的单元格重叠。
### 输入格式
第一行包含两个整数 $N$ 和 $M$。
接下来的 $N$ 行中,每行包含 $M$ 个整数,对应于单元格。普通单元格由 $0$ 表示,而禁止的单元格由 $1$ 表示。
接下来一行包含 $6$ 个整数 $H$,$W$,$S_r$,$S_c$,$F_r$,$F_c$。
### 输出格式
如果没有解决方案,则输出 $-1$。
否则,输出一个整数,表示所需的最小步数。
### 样例输入
```
4 5
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
2 2 1 1 1 4
```
### 样例输出
```
7
```
### 评测数据规模
$1 \leq N, M \leq 1000$。