python3超时用Pypy3运行

from collections import deque

n,m,p = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(n)]
B = [list(map(int,input().split())) for _ in range(n)]
C = [[0]*m for _ in range(n)]

# 预处理数组C
MOD = p-1
for i in range(n):
    for j in range(m):
        exp = pow(2, B[i][j], MOD)
        C[i][j] = A[i][j] * pow(p, exp, MOD) % MOD

# 三维,否已经到达过位置 x,y, 且此时计数器模值为 mod_val
visited = [[[False] * MOD for _ in range(m)] for _ in range(n)]
q = deque()

start_val = C[0][0] % MOD
visited[0][0][start_val] = True
q.append((0, 0, start_val, 0))  # (x, y, mod_val, steps)

dirs = [(-1,0),(1,0),(0,-1),(0,1)]

res = -1
while q:
    x, y, mod_val, steps = q.popleft()

    # 到达终点且满足条件
    if x == n - 1 and y == m - 1 and mod_val % MOD == 0:
        res = steps
        break

    for dx, dy in dirs:
        nx, ny = x + dx, y + dy
        if 0 <= nx < n and 0 <= ny < m:
            new_val = (mod_val + C[nx][ny]) % MOD
            if not visited[nx][ny][new_val]:
                visited[nx][ny][new_val] = True
                q.append((nx, ny, new_val, steps + 1))
print(res)