from collections import deque
# Process input
n, m, p = map(int, input().split())
ma = [list(map(int, input().split())) for _ in range(n)]
mb = [list(map(int, input().split())) for _ in range(n)]
# Aux
mc = ma
MOD = p - 1
# BFS
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
q = deque()
q.append((0, 0, mc[0][0], 0))
dist = [[[1e9]*MOD for _ in range(m)] for _ in range(n)]
while q:
x, y, c, t = q.popleft()
rem = c % MOD
if t >= dist[x][y][rem]:
continue
dist[x][y][rem] = t
if x == n-1 and y == m-1 and rem == 0:
break
for i in range(4):
nx, ny = x+dx[i], y+dy[i]
if 0 <= nx < n and 0 <= ny < m:
q.append((nx, ny, c+mc[nx][ny], t+1))
# Output
res = dist[n-1][m-1][0]
print(-1 if res == 1e9 else res)