from collections import deque from sys import exit N, V, Sx, Sy, Gx, Gy = map(int, input().split()) Sx, Sy, Gx, Gy = map(lambda x: x - 1, (Sx, Sy, Gx, Gy)) L = [tuple(map(int, input().split())) for _ in range(N)] cost_table = [[V] * N for _ in range(N)] cost_table[Sy][Sx] = 0 d = deque([(Sy, Sx, 0)]) while d: y, x, t = d.popleft() for dy, dx in ((1, 0), (-1, 0), (0, 1), (0, -1)): if 0 <= y + dy < N and 0 <= x + dx < N and cost_table[y + dy][x + dx] > cost_table[y][x] + L[y + dy][x + dx]: d.append((y + dy, x + dx, t + 1)) cost_table[y + dy][x + dx] = cost_table[y][x] + L[y + dy][x + dx] if (x + dx, y + dy) == (Gx, Gy): print(t + 1) exit() print(-1)