#include<bits/stdc++.h>
using namespace std;
queue<int>x,y,t;
bool bj=0;
int ans=0;
bool vis[1001][1001];
char a[1001][1001];
int x2,y2;
int n;
int p1[4]={0,0,1,-1},p2[4]={1,-1,0,0};
void bfs(int x1,int y1,int t1)
{
if(x1==x2&&y1==y2)
{
ans=t1;
bj=1;
}
for(int i=0;i<=3;i++)
{
if(x1+p1[i]>=1&&x1+p1[i]<=n&&y1+p2[i]>=1&&y1+p2[i]<=n)
{
if(a[x1+p1[i]][y1+p2[i]]=='0'&&!vis[x1+p1[i]][y1+p2[i]])
{
vis[x1+p1[i]][y1+p2[i]]=1;
x.push(x1+p1[i]);
y.push(y1+p2[i]);
t.push(t1+1);
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=getchar();
}
getchar();
}
int x1,y1;
cin>>x1>>y1>>x2>>y2;
x.push(x1);
y.push(y1);
t.push(0);
while(!x.empty()&&!bj)
{
bfs(x.front(),y.front(),t.front());
x.pop();
y.pop();
t.pop();
}
cout<<ans;
return 0;
}