#PTA1003. 奇偶迷宫

奇偶迷宫

奇偶迷宫

小红来到了一座神秘的迷宫。

迷宫可以看作一个 n×mn×m 的网格,每个格子要么是空地,要么是墙壁:

'.' 表示可以通过的空地,'#' 表示无法通过的墙壁。

小红从起点 (x1,y1)(x1​,y1​) 出发,想要到达终点 (x2,y2)(x2​,y2​)

在迷宫中,小红的移动方式与当前所在格子的 坐标奇偶性 有关:

如果当前格子的 (x+y)(x+y)偶数,则小红只能向 上、下、左、右 四个方向移动一格。

如果当前格子的 (x+y)(x+y)奇数,则小红可以向 八个方向(上下左右以及四个对角线方向)移动一格。

无论哪种情况,小红都不能走出迷宫边界和进入墙壁格子。

请你判断小红是否能够从起点到达终点。

如果可以到达,请输出 YESYES,并输出到达终点所需要的 最少步数

如果无法到达,请输出 NONO

输入描述

第一行输入六个正整数 $n,m(1 \le n, m \le 10^3),x1,y1(1 \le x1,x2 \le n),x2,y2(1 \le y1, y2 \le m)$ 表示迷宫的行数、列数、起点坐标和终点坐标。

接下来 n 行,每行包含 m 个字符,表示迷宫地图。

保证每个字符为 .#

输出描述

如果可以到达终点,输出两行:

YES

最少步数

如果无法到达终点,输出:

NO

示例1

输入

5 5 1 1 5 5
.....
.###.
.....
.###.
.....

输出

YES
6

解释

一种可行最短路线:(1,1) -> (2,1) -> (3,2) -> (3,3) -> (3,4) -> (4,5) -> (5,5)

示例2

输入

5 5 1 1 5 5
.....
.###.
.....
.####
.#...

输出

NO