from collections import deque def solve(): H,W = map(int,input().split()) Sx,Sy = map(lambda x: int(x)-1, input().split()) Gx,Gy = map(lambda x: int(x)-1, input().split()) grid = [list(input().strip()) for _ in range(H)] dist = [[-1]*W for _ in range(H)] parent = [[None]*W for _ in range(H)] q = deque() dist[Sx][Sy] = 0 q.append((Sx,Sy)) while q: x,y = q.popleft() for dx,dy,op in [(1,0,'A'),(-1,0,'B'),(0,1,'C'),(0,-1,'D')]: nx,ny = x+dx,y+dy if 0<=nx=2 and base_small>=2 and is_prime[base_big] and is_prime[base_small]: return 0 else: return None for t in range(0, MAXP - base_big +1): p = base_big + t q = p - delta if q < 2: continue if is_prime[p] and is_prime[q]: return t return None pad_v = min_pad(max(A0,B0), min(A0,B0), abs(dx), canV) pad_h = min_pad(max(C0,D0), min(C0,D0), abs(dy), canH) if pad_v is None or pad_h is None: print(-1) return ans = (A0 + B0 + C0 + D0) + 2*pad_v + 2*pad_h print(ans) if __name__ == "__main__": solve()