#include<iostream.h>
#include<fstream.h>
#include<time.h>
#include<stdio.h>
int a[53][53],x2,y2,min=20000;
void bizz (int i,int j, int s)
{
int b;
if ((a[i][j]==0)||(a[i][j]==-1)||((i==x2)&&(j==y2)))
{
if ((i==x2)&&(j==y2)) if (s<min) min=s;
}
else
{
b=a[i][j];
a[i][j]=0;
bizz (i+1,j,s+1);
bizz (i-1,j,s+1);
bizz (i,j+1,s+1);
bizz (i,j-1,s+1);
a[i][j]=b;
}
}
void nezz (int i,int j,int k,int s)
{
int b,z;
for (z=a[i][j]/2;z>1;z--)
{
if (a[i][j]%z==0)
if (k%z==0)
k=k/z;
}
b=a[i][j];
a[i][j]=0;
if (k==1) {a[i][j]=b;bizz(i,j,s);a[i][j]=0;}
else
{
if ((a[i+1][j]!=0)&&(a[i+1][j]!=(-1)))nezz (i+1,j,k,s+1);
if ((a[i-1][j]!=0)&&(a[i-1][j]!=(-1)))nezz (i-1,j,k,s+1);
if ((a[i][j+1]!=0)&&(a[i][j+1]!=(-1)))nezz (i,j+1,k,s+1);
if ((a[i][j-1]!=0)&&(a[i][j-1]!=(-1)))nezz (i,j-1,k,s+1);
}
a[i][j]=b;
}
int main()
{
clock_t start,end;
start=clock();
int x1,y1,i,j,n,m,k;
fstream f,g;
f.open("kdrum.in",ios::in);
g.open("kdrum.out",ios::out);
f>>n>>m>>k;
f>>x1>>y1>>x2>>y2;
for (i=0;i<n+2;i++)
for (j=0;j<m+2;j++)
a[i][j]=-1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
f>>a[i][j];
nezz (x1,y1,k,1);
g<<min;
end=clock();
printf ("%.3f",(float)(end-start)/(float)CLOCKS_PER_SEC);
return 0;
}