#include<iostream>
#include <queue>
#include <cstring>
using namespace std;
typedef pair<int, int> pii;
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
int dis[1010][1010];
int n, x, y, x2, y2;
char mp[1010][1010];
queue<pii>q;
int bfs(int x, int y) {
memset(dis, -1, sizeof dis);
q.push({x, y});
dis[x][y] = 0;
while (!q.empty()) {
pii f = q.front();
q.pop();
for (int i = 0; i < 4; ++i) {
int xx = f.first, yy = f.second;
xx += dx[i];
yy += dy[i];
if (xx < 1 || xx > n || yy < 1 || yy > n)
continue;
if (mp[xx][yy] != '0')
continue;
if (dis[xx][yy] > -1)
continue;
q.push({xx, yy});
dis[xx][yy] = dis[f.first][f.second] + 1;
if (dis[x2][y2] > 0)
return dis[x2][y2];
}
}
return -1;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i) {
scanf("%s", mp[i] + 1);
}
cin >> x >> y >> x2 >> y2;
int result = bfs(x, y);
cout << result;
return 0;
}