#include <stdio.h>
int A[51][51],x,y,k,min=-1,n,m;
char ok[51][51];
void lee(int a,int b,int nr,int val)
{
ok[a][b]=1;
if (a==x && b==y) if (val%k==0) if (min==-1 || min>nr) min = nr;
else; else;
else
{
if (a>1) if (!ok[a-1][b]) lee(a-1,b,nr+1,(A[a-1][b]%k)*val);
if (a<n) if (!ok[a+1][b]) lee(a+1,b,nr+1,(A[a+1][b]%k)*val);
if (b>1) if (!ok[a][b-1]) lee(a,b-1,nr+1,(A[a][b-1]%k)*val);
if (b<m) if (!ok[a][b+1]) lee(a,b+1,nr+1,(A[a][b+1]%k)*val);
}
ok[a][b]=0;
}
int main()
{
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);
int i,j,x1,y1;
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d%d%d",&x1,&y1,&x,&y);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&A[i][j]);
lee(x1,y1,1,A[x1][y1]%k);
printf("%d",min);
}