A = [] x = input() while x != "exit": if x == "pop": if len(A) == 0: print("error") else: print(A[0]) A.pop(0) if x == "front": if len(A) == 0: print("error") else: print(A[0]) if x == "size": print(len(A)) if x == "clear": A = [] print("ok") x = x.split() if x[0] == "push": A.append(int(x[1])) print("ok") x = input() print("bye") def bfs(z): A = [-1 for i in range(0, len(a) + 1)] B = [True for i in range(0, len(a) + 1)] A[z] = 0 B[z] = False q = [z] while q: t = q.pop(0) x = a[t] for j in x: if B[j]: B[j] = False A[j] = A[t] + 1 q.append(j) return A n, m =map(int, input(). split()) x1, y1 = map(int, input(). split()) x1 -= 1 y1 -= 1 x2, y2 = map(int, input(). split()) x2 -= 1 y2 -= 1 A = [] for i in range(n): A.append(input()) a = dict() for i in range(0, n * m): a[i] = set() for i in range(n): for j in range(m): if i < n - 1: if A[i + 1][j] == ".": a[i * m + j].add((i + 1) * m + j) if j < m - 1: if A[i][j + 1] == ".": a[i * m + j].add((i) * m + j + 1) if i > 0: if A[i - 1][j] == ".": a[i * m + j].add((i - 1) * m + j) if j > 0: if A[i][j - 1] == ".": a[i * m + j].add((i) * m + j - 1) z = (bfs(x1 * m + y1)[x2 * m + y2]) print(z)