import sys from collections import deque def sieve(n): is_prime = [True]*(n+1) is_prime[0]=is_prime[1]=False for i in range(2,int(n**0.5)+1): if is_prime[i]: for j in range(i*i, n+1, i): is_prime[j]=False return [i for i,pr in enumerate(is_prime) if pr], is_prime def min_prime_pair_sum(delta, primes, is_prime): INF = 10**9 best = INF for pB in primes: pA = pB + delta if pA < 2: continue if pA < len(is_prime) and is_prime[pA]: best = min(best, pA + pB) return best if best < INF else None def main(): input = sys.stdin.readline 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().rstrip()) for _ in range(H)] q = deque([(Sx,Sy)]) vis = [[False]*W for _ in range(H)] vis[Sx][Sy]=True dr = [1,-1,0,0] dc = [0,0,1,-1] has_vert = False has_horiz = False while q: r,c = q.popleft() for nr,nc in [(r+1,c),(r-1,c)]: if 0<=nr