using namespace std;
int n,m,x1,y1,x2,y2;
int map[2002][2002],hash[2002][2002]={0};
int gzx[5]={0,0,0,1,-1};
int gzy[5]={0,1,-1,0,0};
struct queue
{int x,y,s;}line[1000005];
int main()
{
int i,j,head=0,tail=1,tx,ty,ts;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>map[i][j];
for(i=0;i<=n+1;i++)
{
map[i][0]=1;
map[i][m+1]=1;
}
for(i=0;i<=m+1;i++)
{
map[0][i]=1;
map[n+1][i]=1;
}
cin>>x1>>y1;
cin>>x2>>y2;
if(map[x1][y1]||map[x2][y2])
{
cout<<"No Answer!";
return 0;
}
line[tail].x=x1,line[tail].y=y1,line[tail].s=0;
hash[x1][y1]=1;
while(head<=tail)
{
head++;
tx=line[head].x,ty=line[head].y,ts=line[head].s;
if(tx==x2&&ty==y2)
{
cout<<ts<<endl;
return 0;
}
for(i=1;i<=4;i++)
if(map[tx+gzx[i]][ty+gzy[i]]==0&&hash[tx+gzx[i]][ty+gzy[i]]==0)
{
tail++;
line[tail].x=tx+gzx[i];line[tail].y=ty+gzy[i];line[tail].s=ts+1;
hash[tx+gzx[i]][ty+gzy[i]]=1;
}
}
cout<<"No Answer!"<<endl;
return 0;
}