#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
typedef pair<int,int> PII;
queue<PII> p;
int x3,x2;
int y3,y2;
int n;
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int dio[N][N];
char mp[N][N];
int bfs(int x,int y)
{
memset(dio,-1,sizeof dio);
p.push({x,y});
dio[x][y] = 0;
while (p.size())
{
PII t = p.front();
p.pop();
for (int i=0;i < 4;i++){
int a = t.first + dx[i];
int b = t.second + dy[i];
if (dio[a][b] > 0) continue;
if(a<1 || b<1 || a>n || b>n) continue;
if (mp[a][b] != '0') continue;
dio[a][b] = dio[t.first][t.second] + 1;
p.push({a,b});
if (a==x2&&b==y2)
return dio[x2][y2];
}
}
return dio[x2][y2];
}
int main()
{
scanf("%d",&n);
getchar();
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
scanf("%c",&mp[i][j]);
}
if (i != n)
getchar();
}
scanf("%d %d %d %d",&x3,&y3,&x2,&y2);
int res = bfs(x3,y3);
printf("%d",res);
return 0;
}