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))