from collections import deque h, w = map(int, input().split()) a, b = map(int, input().split()) r1, c1, r2, c2 = map(int, input().split()) p, q = map(int, input().split()) a -= 1; b -= 1 r1 -= 1; r2 -= 1; c1 -= 1; c2 -= 1 p -= 1; q -= 1 dxy = [0, 1, 0, -1, 0] length1 = [[10**18 for _ in range(w)] for _ in range(h)] length1[a][b] = 0 queue = deque([(a, b)]) while len(queue) > 0: x, y = queue.popleft() for i in range(4): nx = x + dxy[i] ny = y + dxy[i+1] if 0 <= nx < h and 0 <= ny < w and length1[nx][ny] == 10**18: length1[nx][ny] = length1[x][y] + 1 queue.append((nx, ny)) length2 = [[10**18 for _ in range(w)] for _ in range(h)] length2[p][q] = 0 queue = deque([(p, q)]) while len(queue) > 0: x, y = queue.popleft() for i in range(4): nx = x + dxy[i] ny = y + dxy[i+1] if 0 <= nx < h and 0 <= ny < w and length2[nx][ny] == 10**18: length2[nx][ny] = length2[x][y] + 1 queue.append((nx, ny)) ans = 10**18 for x in range(r1, r2+1): for y in range(c1, c2+1): tmp = length1[x][y] + length2[x][y] + length1[p][q] ans = min(ans, tmp) print(ans)