import sys import math import bisect import heapq from collections import deque, defaultdict #160427717982164055zq # ------------------------------------------------- def ST(): return input().rstrip() def IN(): return int(input()) def ML(typ=int): return [typ(x) for x in input().split()] def IM(): return ML() def IL(): return ML() H, W = IM() A, B = IM() r1, c1, r2, c2 = IM() P, Q = IM() def BFS_basic(G, a): # グラフGの頂点aを始点とする幅優先探索 dist = [-1] * len(G) nodes = [[] for _ in range(len(G))] dist[a] = 0 nodes[0] = [a] for k in range(1, len(G)): # k-1 手目に探索された各頂点 v に対して for v in nodes[k - 1]: for next_v in G[v]: # 頂点 next_v を探索する if dist[next_v] == -1: dist[next_v] = dist[v] + 1 nodes[k].append(next_v) return dist, nodes """ G = [[] for _ in range(H, W)] for i in range(H): for j in range(W): v = i*W+j if v-W>=0: G[v].append(G[v-W]) if v+W < H*W: G[v].append(G[v+W]) if j != 0: G[v].append(G[v-1]) if j != W-1: G[v].append(G[v+1]) def BFS_basic(G, a): # グラフGの頂点aを始点とする幅優先探索 dist = [-1] * len(G) nodes = [[] for _ in range(len(G))] dist[a] = 0 nodes[0] = [a] for k in range(1, len(G)): # k-1 手目に探索された各頂点 v に対して for v in nodes[k - 1]: for next_v in G[v]: # 頂点 next_v を探索する if dist[next_v] == -1: dist[next_v] = dist[v] + 1 nodes[k].append(next_v) return dist, nodes """ def manh(a, b, r, c): return abs(a-r)+abs(b-c) ans = 10**18 for i in range(r1, r2+1): for j in range(c1, c2+1): ans = min(ans, manh(i, j, A, B)+manh(i, j, P, Q)) print(ans+manh(A, B, P, Q))