#include <cstdio>
#include <cstdlib>
#include <bitset>
#include <queue>
#define pii pair< pair<int,int>, pair<int,int> >
#define pi pair<int,int>
#define mp make_pair
#define ff first
#define ss second
using namespace std;
const int maxK = 12001;
const int maxN = 51;
const int oo = 10000000;
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
pi start, finish;
queue< pi > P, Q;
int N, M, K;
int A[maxN][maxN], B[maxN][maxN], C[maxN][maxN];
bitset<maxK> Z;
void baga_marfa(){
int i, j;
for (i = 2; i <= K; ++i)
if (K % i == 0) Z[i] = true;
else Z[i] = false;
}
void edit(){
int i, j;
for (i = 1; i <= N; ++i)
for (j = 1; j <= M; ++j){
if (A[i][j] == 0) A[i][j] = -1;
else if (Z[A[i][j]] == 0) A[i][j] = 1;
B[i][j] = oo;
}
for (i = 0; i <= N + 1 || i <= M + 1; ++i)
A[0][i] = A[N + 1][i] = A[i][0] = A[i][M + 1] = -1;
}
void go(){
pi now1, now2, next1, next2;
int i, k;
P.push(start), Q.push(mp(A[start.ff][start.ss], 1));
B[start.ff][start.ss] = 1;
while (Q.empty() == false && P.empty() == false){
now1 = P.front(), now2 = Q.front(), P.pop(), Q.pop();
//fprintf(stderr, "%d %d %d %d\n", now1.ff, now1.ss, now2.ff, now2.ss);
if (P.front() == finish && Q.front().ss == 0)
return;
for (k = 0; k < 4; ++k){
next1 = mp(now1.ff + dx[k], now1.ss + dy[k]);
if (A[next1.ff][next1.ss] != -1 && (B[next1.ff][next1.ss] > B[now1.ff][now1.ss] + 1 || (B[next1.ff][next1.ss] < (now2.ff * A[next1.ff][next1.ss]) % K))){
next2 = mp( (now2.ff * A[next1.ff][next1.ss]) % K, now2.ss + 1);
B[next1.ff][next1.ss] = now2.ss + 1;
P.push(next1);
Q.push(next2);
}
}
}
}
int main(){
int i, j;
freopen("kdrum.in", "r", stdin);
freopen("kdrum.out", "w", stdout);
scanf("%d%d%d", &N, &M, &K);
scanf("%d%d%d%d", &start.first, &start.second, &finish.first, &finish.second);
for (i = 1; i <= N; ++i)
for (j = 1; j <= M; ++j){
scanf("%d", &A[i][j]);
if (A[i][j] % K == 0 && A[i][j] != 0)
A[i][j] = K;
else
A[i][j] = A[i][j] % K;
}
baga_marfa();
edit();
/*for (i = 1; i <= N; ++i){
for (j = 1; j <= M; ++j)
printf("%d ", A[i][j]);
puts("");
}*/
go();
//puts("");
/*for (i = 1; i <= N; ++i){
for (j = 1; j <= M; ++j)
printf("%d ", B[i][j]);
puts("");
}*/
printf("%d\n", B[finish.ff][finish.ss]);
}