#abc170f. [abc170_f]Pond Skater

[abc170_f]Pond Skater

题目描述

Snuke是一只水黾,它生活在一个可以看作是HHWW列的方形池塘中。用(i,j)(i,j)表示位于北边第ii行、西边第jj列的方格。

某些方格上有着荷叶,无法进入。如果cijc_{ij}@,则方格(i,j)(i,j)上有一片荷叶;如果cijc_{ij}.,则方格(i,j)(i,j)上没有荷叶。

Snuke每次可以朝四个方向之一(北、东、南、西)移动11KK个方格(包括11KK)。移动过程中不能经过有荷叶的方格,也不能离开池塘。

找出Snuke从方格(x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)所需的最小移动次数。如果从(x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)的移动不可能,指出这个事实。

约束条件

  • 1H,W,K1061 \leq H,W,K \leq 10^6
  • H×W106H \times W \leq 10^6
  • 1x1,x2H1 \leq x_1,x_2 \leq H
  • 1y1,y2W1 \leq y_1,y_2 \leq W
  • x1x2x_1 \neq x_2y1y2y_1 \neq y_2
  • ci,jc_{i,j}.@
  • cx1,y1=c_{x_1,y_1} = .
  • cx2,y2=c_{x_2,y_2} = .
  • 输入中的所有值都是整数。

输入

从标准输入中按以下格式给出输入数据:

HH WW KK x1x_1 y1y_1 x2x_2 y2y_2 c1,1c1,2c_{1,1}c_{1,2} .... c1,Wc_{1,W} c2,1c2,2c_{2,1}c_{2,2} .... c2,Wc_{2,W} :: cH,1cH,2c_{H,1}c_{H,2} .... cH,Wc_{H,W}

输出

输出Snuke从方格(x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)所需的最小移动次数,或者如果不可能,则输出-1


示例输入1

3 5 2
3 2 3 4
.....
.@..@
..@..

示例输出1

5

初始时,Snuke位于方格(3,2)(3,2)。它可以通过以下五个步骤到达方格(3,4)(3,4)

  • (3,2)(3,2)向西移动一个方格到(3,1)(3,1)

  • (3,1)(3,1)向北移动两个方格到(1,1)(1,1)

  • (1,1)(1,1)向东移动两个方格到(1,3)(1,3)

  • (1,3)(1,3)向东移动一个方格到(1,4)(1,4)

  • (1,4)(1,4)向南移动两个方格到(3,4)(3,4)


示例输入2

1 6 4
1 1 1 6
......

示例输出2

2

示例输入3

3 3 1
2 1 2 3
.@.
.@.
.@.

示例输出3

-1