const dx:array[1..4]of integer=(1,-1,0,0);
dy:array[1..4]of integer=(0,0,-1,1);
var o,x1,y1,x2,y2,sum,head,head1,foot,m,n,i,j,k:longint;
lx,ly:array[1..200300]of longint;
b:array[-1..2003,-1..2003]of -1..1;
function appear(h,l:longint):boolean;
var i1:longint;
begin
for i1:=1 to foot do if (h=lx[i1])and(l=ly[i1])then exit(true);
exit(false);
end;
begin
readln(n,m);
for i:=-1 to n+2 do
for j:=-1 to m+2 do
b[i,j]:=-1;
For i:=1 to n do
begin
for j:=1 to m do read(b[i,j]);
readln;
end;
readln(x1,y1);
readln(x2,y2);
lx[1]:=x1;
ly[1]:=y1;
head:=0;
foot:=1;
repeat
inc(sum);
head1:=head;
for o:=head1+1 to foot do
begin
inc(head);
for i:=1 to 4 do
if b[lx[o]+dx[i],ly[o]+dy[i]]=0 then
begin
if (lx[o]+dx[i]=x2)and(ly[o]+dy[i]=y2)then begin write(sum);exit;end;
b[lx[o]+dx[i],ly[o]+dy[i]]:=-1;
begin
inc(foot);
lx[foot]:=lx[o]+dx[i];
ly[foot]:=ly[o]+dy[i];
end;
end;
end;
until head>foot;
write('No Answer!');
end.