#include<stdio.h>
struct QUEUE
{
int p,l,x,y;
};
QUEUE q[200000];
int x1,y1,x2,y2,xx,yy,k,min,n,m,i,j,u,p,c;
long a[51][51];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int main()
{
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
scanf("%ld",&a[i][j]);
q[1].p=0;
p=u=1;
q[1].l=1;
q[1].x=x1;
q[1].y=y1;
min=2501;
while(p<=u||(q[p].x==x2&&q[p].y==y2))
{
for(i=0;i<=3;++i)
{
xx=q[p].x+dx[i];
yy=q[p].y+dy[i];
if(a[xx][yy]&&q[p].l<min)
{
u++;
q[u].p=p;
q[u].l=q[p].l+1;
q[u].x=xx;
q[u].y=yy;
if(xx==x2&&yy==y2)
if(q[u].l<min) min=q[u].l;
}
}
p++;
}
printf("%d\n",min);
return 0;
}