Problem:


Score : 400 points

Problem Statement

A maze is composed of a grid of H \times W squares - H vertical, W horizontal.

The square at the i-th row from the top and the j-th column from the left - (i,j) - is a wall if S_{ij} is # and a road if S_{ij} is ..

There is a magician in (C_h,C_w). He can do the following two kinds of moves:

Move A: Walk to a road square that is vertically or horizontally adjacent to the square he is currently in.

Move B: Use magic to warp himself to a road square in the 5\times 5 area centered at the square he is currently in.

In either case, he cannot go out of the maze.

At least how many times does he need to use the magic to reach (D_h, D_w)?

Constraints

1 \leq H,W \leq 10^3

1 \leq C_h,D_h \leq H

1 \leq C_w,D_w \leq W

S_{ij} is # or ..

S_{C_h C_w} and S_{D_h D_w} are ..

(C_h,C_w) \neq (D_h,D_w)

Input

Input is given from Standard Input in the following format:

H W
C_h C_w
D_h D_w
S_{11}\ldots S_{1W}
\vdots
S_{H1}\ldots S_{HW}

Output

Print the minimum number of times the magician needs to use the magic. If he cannot reach (D_h,D_w), print -1 instead.

Sample Input 1

4 4
1 1
4 4
..#.
..#.
.#..
.#..

Sample Output 1

1

For example, by walking to (2,2) and then using the magic to travel to (4,4), just one use of magic is enough.

Note that he cannot walk diagonally.

Sample Input 2

4 4
1 4
4 1
.##.
####
####
.##.

Sample Output 2

-1

He cannot move from there.

Sample Input 3

4 4
2 2
3 3
....
....
....
....

Sample Output 3

0

No use of magic is needed.

Sample Input 4

4 5
1 2
2 5
#.###
####.
#..##
#..##

Sample Output 4

2



Sample input:
4 4
1 1
4 4
..#.
..#.
.#..
.#..


Sample output:
1

Submission status: Time Limit Exceeded

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np
i4 = np.int32
i8 = np.int64

L1 = 1000000001
L = 1000000000


def push(h, w, dis, s, stack_h, stack_w, p):
    s[h, w] = dis
    stack_h[p] = h
    stack_w[p] = w
    p += 1
    return p


def pop(stack_h, stack_w, p):
    p -= 1
    h = stack_h[p]
    w = stack_w[p]
    return h, w, p


def solve(s, ih, iw):
    sh1 = np.empty(1000000, i8)
    sw1 = np.empty(1000000, i8)
    p1 = 0
    sh2 = np.empty(1000000, i8)
    sw2 = np.empty(1000000, i8)
    p2 = 0

    sh1[p1] = ih
    sw1[p1] = iw
    dis = 0
    p1 = push(ih, iw, dis, s, sh1, sw1, p1)

    while True:
        while p1 > 0:
            h, w, p1 = pop(sh1, sw1, p1)
            if s[h, w + 1] > dis:
                p1 = push(h, w + 1, dis, s, sh1, sw1, p1)
            if s[h, w - 1] > dis:
                p1 = push(h, w - 1, dis, s, sh1, sw1, p1)
            if s[h + 1, w] > dis:
                p1 = push(h + 1, w, dis, s, sh1, sw1, p1)
            if s[h - 1, w] > dis:
                p1 = push(h - 1, w, dis, s, sh1, sw1, p1)
            for i in range(-2, 3):
                for j in range(-2, 3):
                    if s[h + i, w + j] > L:
                        p2 = push(h + i, w + j, dis + 1, s, sh2, sw2, p2)

        dis += 1
        for i in range(p2):
            if s[sh2[i], sw2[i]] == dis:
                sh1[p1] = sh2[i]
                sw1[p1] = sw2[i]
                p1 += 1

        if p1 == 0:
            break


def main(in_file):
    stdin = open(in_file)
    H, W = [int(x) for x in stdin.readline().split()]
    ch, cw = [int(x) for x in stdin.readline().split()]
    dh, dw = [int(x) for x in stdin.readline().split()]
    s = np.empty((H + 4, W + 4), i8)
    t = stdin.read()
    m = 0
    for i in range(2, H + 2):
        for j in range(2, W + 3):
            if ord(t[m]) == 46:
                s[i, j] = L1
            else:
                s[i, j] = -1
            m += 1
    s[0] = -1
    s[1] = -1
    s[-2] = -1
    s[-1] = -1
    s[:, 0] = -1
    s[:, 1] = -1
    s[:, -1] = -1
    solve(s, ch + 1, cw + 1)
    if s[dh + 1, dw + 1] > L:
        print(-1)
    else:
        print(s[dh + 1, dw + 1])


def main2():
    main('/dev/stdin')
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'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'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)