Var x1,x2,y1,y2,x,y,n,i,j,head,tail:longint;
st:string;
a,v:array[1..1000,1..10000] of 0..1;
t:array [1..1000000,1..2] of 0..1000;
xx:array [1..4] of longint=(1,-1,0,0);
yy:array [1..4] of longint=(0,0,1,-1);
d:array [1..1000,1..1000] of longint;
Procedure input;
Begin
Fillchar(v,sizeof(v),0);
Fillchar(d,sizeof(d),0);
Readln(n);
For i:=1 To n Do
Begin
Readln(st);
For j:=1 To n Do
a[i,j]:=ord(st[j])-ord('0');
End;
Readln(x1,y1);
Readln(x2,y2);
t[1,1]:=x1; t[1,2]:=y1; v[x1,y1]:=1;
v[x2,y2]:=0;
End;
Procedure main;
Begin
head:=0; tail:=1;
While head<=tail Do
Begin
inc(head);
x:=t[head,1]; y:=t[head,2];
For i:=1 To 4 do
Begin
If (x+xx[i]>0) and (y+yy[i]>0) and (x+xx[i]<=n) and (y+yy[i]<=n) Then
If (v[x+xx[i],y+yy[i]]=0) and (a[x+xx[i],y+yy[i]]=0) Then Begin
inc(tail);
t[tail,1]:=x+xx[i];
t[tail,2]:=y+yy[i];
v[x+xx[i],y+yy[i]]:=1;
d[x+xx[i],y+yy[i]]:=d[x,y]+1;
End;
If v[x2,y2]=1 Then Begin
head:=maxlongint;
Break;
End;
End;
End;
End;
Begin
input;
main;
Writeln(d[x2,y2]);
End。