#include<iostream>
#include<queue>
#include<cstring>
#include <algorithm>
using namespace std;
#define N 1005
typedef pair<int,int> PII;
int n,x1,y1,x2,y2;
char map[N][N];
int dist[N][N];
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
queue <PII> q;
int bfs(int x,int y){
memset(dist,-1,sizeof dist);
q.push({x,y});
dist[x][y]=0;
while(!q.empty()){
auto t=q.front();
q.pop();
for(int i=0;i<4;i++){
int a=t.first+dx[i],b=t.second+dy[i];
if(a<1 || a>n || b<1 || b>n)continue;
if(map[a][b]=='1')continue;
if(dist[a][b]>0)continue;
q.push({a,b});
dist[a][b]=dist[t.first][t.second]+1;
if(a==x2 && b==y2)break;
}
}
return dist[x2][y2];
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%s",map[i]);
}
cin>>x1>>y1>>x2>>y2;
int res=bfs(x1,y1);
cout<<res<<endl;
}