题目描述
Snuke是一只水黾,它生活在一个可以看作是H行W列的方形池塘中。用(i,j)表示位于北边第i行、西边第j列的方格。
某些方格上有着荷叶,无法进入。如果cij是@
,则方格(i,j)上有一片荷叶;如果cij是.
,则方格(i,j)上没有荷叶。
Snuke每次可以朝四个方向之一(北、东、南、西)移动1到K个方格(包括1和K)。移动过程中不能经过有荷叶的方格,也不能离开池塘。
找出Snuke从方格(x1,y1)到(x2,y2)所需的最小移动次数。如果从(x1,y1)到(x2,y2)的移动不可能,指出这个事实。
约束条件
- 1≤H,W,K≤106
- H×W≤106
- 1≤x1,x2≤H
- 1≤y1,y2≤W
- x1=x2 或 y1=y2。
- ci,j 是
.
或 @
。
- cx1,y1=
.
- cx2,y2=
.
- 输入中的所有值都是整数。
输入
从标准输入中按以下格式给出输入数据:
H W K
x1 y1 x2 y2
c1,1c1,2 .. c1,W
c2,1c2,2 .. c2,W
:
cH,1cH,2 .. cH,W
输出
输出Snuke从方格(x1,y1)到(x2,y2)所需的最小移动次数,或者如果不可能,则输出-1
。
示例输入1
3 5 2
3 2 3 4
.....
.@..@
..@..
示例输出1
5
初始时,Snuke位于方格(3,2)。它可以通过以下五个步骤到达方格(3,4):
-
从(3,2)向西移动一个方格到(3,1)。
-
从(3,1)向北移动两个方格到(1,1)。
-
从(1,1)向东移动两个方格到(1,3)。
-
从(1,3)向东移动一个方格到(1,4)。
-
从(1,4)向南移动两个方格到(3,4)。
示例输入2
1 6 4
1 1 1 6
......
示例输出2
2
示例输入3
3 3 1
2 1 2 3
.@.
.@.
.@.
示例输出3
-1