#include <stdlib.h>
long eg[2010][2010],mark[2010][2010];
int fx[5]={0,-1,0,1,0};
int fy[5]={0,0,1,0,-1};
struct node{int x;int y;int step;}now,q[40001];
int main()
{
long n,m,i,j,step,head,tail,x1,x2,y1,y2;
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%ld",&eg[i][j]);
scanf("%ld %ld",&x1,&y1);
scanf("%ld %ld",&x2,&y2);
head=1;tail=1;q[1].x=x1;q[1].y=y1;q[1].step=0;
memset(mark,0,sizeof(mark));
mark[x1][y1]=1;
if(eg[x2][y2]==1)
printf("No Answer!");
while(head<=tail)
{
now=q[head];
if((now.x==x2)&&(now.y==y2))
{
printf("%d",now.step);
}
for(i=1;i<=4;i++)
{
if ((now.x+fx[i]>0)&&(now.x+fx[i]<=n)&&(now.y+fy[i]>0)&&(now.y+fy[i]<=m))
if((eg[now.x+fx[i]][now.y+fy[i]]==0)&&(mark[now.x+fx[i]][now.y+fy[i]]==0))
{
tail++;
q[tail].x=now.x+fx[i];
q[tail].y=now.y+fy[i];
q[tail].step=now.step+1;
mark[now.x+fx[i]][now.y+fy[i]]=1;
}
}
head++;
}
return 0;
}