#include<stdio.h>
int h,w;
int X[4]={1,0,-1,0};
int Y[4]={0,1,0,-1};
int f(int y,int x){
  if(y<0||h<=y||x<0||w<=x)return -1;
  return y*w+x;
}
int y[2000010],x[2000010];
char m[2000010];
int k,sx,sy,gx,gy,ny,nx,np,i,j,t=0,r,d[2000010]={};
int main(){
  scanf("%d %d %d %d %d %d %d",&h,&w,&k,&sy,&sx,&gy,&gx);
  sx--;
  sy--;
  gx--;
  gy--;
  for(i=0;i<h;i++){
    for(j=0;j<w;j++)scanf(" %c",&m[f(i,j)]);
  }
  t=0;
  m[f(y[0]=sy,x[0]=sx)]='@';
  for(r=1;r-t;t++){
    for(i=0;i<4;i++){
      for(j=1;j<=k;j++){
	ny=y[t]+Y[i]*j;
	nx=x[t]+X[i]*j;
	np=f(ny,nx);//printf("%d\n",np);
	if(np==-1)goto NEXT;
	if(m[np]=='@')goto NEXT;
	d[np]=d[f(y[t],x[t])]+1;
	m[f(y[r]=ny,x[r]=nx)]='@';
	r++;
      }
    NEXT:;
    }
    /*for(i=0;i<h;i++){
      for(j=0;j<w;j++)printf("%d ",d[f(i,j)]);printf("\n");
      }//*/
  }
  if(d[f(gy,gx)]==0)d[f(gy,gx)]=-1;
  printf("%d\n",d[f(gy,gx)]);
  return 0;
}
