#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, q, X, Y, Z, T, o = -1, i, G[] = { -1, 0, 1, 0}, U[] = {0, 1, 0, -1}, C = 0, K = 1;
cin >> a >> b;
string m[a];
for (q = -1; ++q < a;) cin >> m[q];
cin >> X >> Y >> Z >> T;
Y--, T--;
for (deque<int> d = {X * b + Y}; d.size(); K--) {
if (!K) K = d.size(), C++;
int x = d[0] / b, y = d[0] % b; d.pop_front();
o = x == Z & y == T ? C : o;
for (i = -1; ++i < 4;) {
X = x + G[i], Y = y + U[i];
if (0 < X & X <= a & 0 <= Y & Y < b & m[X - 1][Y] == 46)
m[X - 1][Y] = 47, d.push_back(X * b + Y);
}
}
cout << o;
}