n, m = map(int, input().split())
s_x, s_y, e_x, e_y = map(int, input().split())
mtr = [[1]* m for _ in range(n)]
for i in range(n):
    row = input()
    for j, ele in enumerate(row):
        if ele == '.':
            mtr[i][j] = 0

def Step(s_x, s_y, e_x, e_y, mtr):
    cur = [s_x - 1, s_y - 1]
    end = [e_x - 1, e_y - 1]
    step = 0
    s = [cur]
    while s:
        next_s = []
        for ele in s:
            for i, j in [(0, 1), (1, 0), (0, -1), (-1, 0)]:
                new_x, new_y = ele[0] + i, ele[1] + j
                if 0 <= new_x < n and 0 <= new_y < m and mtr[new_x][new_y] == 0:
                    next_s.append([new_x, new_y])
                    mtr[new_x][new_y] = 1
        s = next_s 
        step += 1
        if end in s:
            return step
    return -1

print(Step(s_x, s_y, e_x, e_y, mtr))