#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main(){ int r, c; int s1, s2, g1, g2; char m[51][51]; queue bfs; queue bfs1; int bfs2[50][50] = { 0 }; int ans = 0; int b1[4] = { 0,0,1,-1 }; int b2[4] = { 1,-1,0,0 }; cin >> r >> c >> s1 >> s2 >> g1 >> g2; s1--; s2--; g1--; g2--; bfs.push(s2); bfs1.push(s1); for (int a = 0; a < r; a++) { for (int b = 0; b < c; b++) { cin >> m[b][a]; } } for (;;) { for (int i = 0; i < 4; i++) { if (m[bfs.front() + b1[i]][bfs1.front() + b2[i]] == '.' && bfs2[bfs.front() + b1[i]][bfs1.front() + b2[i]] == 0) { bfs.push(bfs.front() + b1[i]); bfs1.push(bfs1.front() + b2[i]); bfs2[bfs.front() + b1[i]][bfs1.front() + b2[i]] = bfs2[bfs.front()][bfs1.front()] + 1; } } ans++; bfs.pop(); bfs1.pop(); if (bfs.front() == g2 && bfs1.front() == g1) { cout << bfs2[bfs.front()][bfs1.front()] << endl; return 0; } } }