企鹅 Zrakoplović 想要学习飞行!
他学习飞行的空间可以想象成一个维度为 $n \times n \times n$ 的立方体,被划分为 $n^3$ 个单位立方体。每个单位立方体可以用三个坐标 $(x, y, z)$ 来描述,其中 $x, y, z$ 是 $1$ 到 $n$ 之间的整数。坐标 $x$ 表示距离空间左边缘的距离,坐标 $y$ 表示距离空间前边缘的距离,坐标 $z$ 表示高度。
其中一些单位立方体包含云,而另一些则没有。
Zrakoplović 害怕云,所以他只会学习在没有云的地方飞行。他最初位于位置 $(x_s, y_s, z_s)$,其中 $z_s = 1$(即高度为 1),并希望到达位置 $(x_e, y_e, z_e)$。
目前,他正在完善平行于空间坐标轴(即 $x$ 轴、$y$ 轴或 $z$ 轴方向)的飞行技能,并且在一次拍打翅膀中,他最多可以跨越一个单位立方体。
在决定飞行之前,Zrakoplović 想知道他需要拍打多少次翅膀才能到达目标位置。在他准备飞行时,请帮他回答这个问题。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 100$),表示 Zrakoplović 学习飞行的空间维度。
第二行包含三个整数 $x_s, y_s$ 和 $z_s$ ($1 \le x_s, y_s \le n, z_s = 1$),表示 Zrakoplović 的起始位置。
第三行包含三个整数 $x_e, y_e$ 和 $z_e$ ($1 \le x_e, y_e, z_e \le n$),表示 Zrakoplović 的目标位置。
接下来是 $n$ 个维度为 $n \times n$ 的二进制矩阵,描述了该空间,其中第 $i$ 个矩阵描述了高度为 $i$ 时的空间情况。左上角坐标为 $(1, 1, i)$。矩阵的行和列分别对应 $x$ 和 $y$ 坐标。
'0' 表示没有云的单位立方体,'1' 表示有云的单位立方体。
Zrakoplović 的起始位置和目标位置都不会是云。
输出格式
在第一行中,输出 Zrakoplović 到达目标位置所需的最少拍打翅膀次数。如果 Zrakoplović 无法到达目标位置,则输出 '-1'。
子任务
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 7 | $n = 2$ |
| 2 | 16 | 没有云 |
| 3 | 22 | 所有 $z$ 坐标大于 1 的位置都是云 |
| 4 | 25 | 无额外限制 |
样例
输入 1
2 1 1 1 1 1 2 00 10 01 00
输出 1
1
说明 1
Zrakoplović 可以通过沿 $z$ 轴方向移动一个单位立方体,在一次拍打翅膀内到达目标位置。
输入 2
3 2 3 1 1 1 1 000 010 000 111 111 111 111 111 111
输出 2
3
输入 3
3 2 1 1 3 2 2 000 010 110 010 001 001 101 110 000
输出 3
3
说明 3
Zrakoplović 可以通过先移动到位置 $(2, 1, 2)$,然后移动到 $(2, 2, 2)$,最后移动到 $(3, 2, 2)$,在三次拍打翅膀内到达目标位置。
Figure 1. Zrakoplović 想要学习飞行