#include <stdio.h>
const int NMAX=60;
const int deplx[]={0, 1, 0, -1};
const int deply[]={1, 0, -1, 0};
int drum[NMAX][NMAX], qx[NMAX], qy[NMAX];
long a[NMAX][NMAX];
void bf(int x1, int y1, int x2, int y2);
int main()
{
int n, m, i, j, x1, x2, y1, y2, k;
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<=m; j++)
scanf("%ld", &a[i][j]);
bf(x1, y1, x2, y2);
printf("%d", drum[x2][y2]);
return 0;
}//main
void bf(int x1, int y1, int x2, int y2)
{
int u=0, p=0, tx, ty, x, y, i;
qx[u]=x1;
qy[u]=y1;
drum[x1][y1]=1;
while (p<=u)
{
tx=qx[p];
ty=qy[p];
p++;
for (i=0; i<4; i++)
{
x=tx+deplx[i];
y=ty+deply[i];
if ((!drum[x][y])&&(a[x][y]))
{
u++;
qx[u]=x;
qy[u]=y;
drum[x][y]=drum[tx][ty]+1;
if ((x==x2)&&(y==y2))
return;
}//if
}//for i
}//while
}//bf