#include<queue>
#include<iostream>
using namespace std;
char a[1005][1005];
int k[1005][1005];
int n;
int x1,y1,x2,y2;
struct node{
int x,y;
};
queue<node>f;
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
void bfs(){
while(f.empty()==0){
node t=f.front();
f.pop();
a[t.x][t.y]='1';
for(int i=0;i<4;i++){
if(a[t.x+dx[i]][t.y+dy[i]]=='0'){
k[t.x+dx[i]][t.y+dy[i]]=k[t.x][t.y]+1;
f.push((node){t.x+dx[i],t.y+dy[i]});
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];
cin>>x1>>y1>>x2>>y2;
f.push((node){x1,y1});
bfs();
cout<<k[x2][y2];
}