#include<algorithm>
using namespace std;
int n,m,k,x1,y1,x2,y2,a[51][51];
const int di[]={-1,1,0,0},dj[]={0,0,-1,1};
struct coada{
int x,y;};
coada c[2501];
void lee(){
int i,st,dr;
for(st=dr=1,c[st].x=x1,c[st].y=y1; st<=dr; ++st){
for(i=0; i<4; ++i)
if(!a[c[st].x+di[i]][c[st].y+dj[i]]){
a[c[st].x+di[i]][c[st].y+dj[i]]=a[c[st].x][c[st].y]+1;
c[++dr].x=c[st].x+di[i];
c[dr].y=c[st].y+dj[i];}}}
void solve(){
int i,j,nr;
scanf("%d%d%d%d%d%d%d",&n,&m,&k,&x1,&y1,&x2,&y2);
for(i=1; i<=n; ++i)
for(j=1; j<=m; ++j){
scanf("%d",&nr);
if(nr==0)
a[i][j]=-1;
else
a[i][j]=0;}
for(i=0; i<n+2; ++i)
a[i][0]=a[i][m+1]=-1;
for(i=0; i<m+2; ++i)
a[0][i]=a[n+2][i]=-1;
lee();
printf("%d",a[x2][y2]+1);}
int main(){
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);
solve();
return 0;}