#include using namespace std; using ll = long long; #define rep(i, n) for (ll i = 0; i < (n); i++) const vector di = {1, 0, -1, 0}; const vector dj = {0, 1, 0, -1}; int main() { ll h, w, a, b, r1, c1, r2, c2, p, q; cin >> h >> w >> a >> b >> r1 >> c1 >> r2 >> c2 >> p >> q; a--; b--; r1--; c1--; p--; q--; vector dist(h, vector(w, -1)); queue> que; dist[a][b] = 0; que.emplace(a, b); while (!que.empty()) { auto [i, j] = que.front(); que.pop(); rep(p, 4) { ll ni = i + di[p], nj = j + dj[p]; if (ni < 0 || ni >= h || nj < 0 || nj >= w || dist[ni][nj] != -1) continue; dist[ni][nj] = dist[i][j] + 1; que.emplace(ni, nj); } } ll ans = 1e18; rep(i, h)rep(j, w) if (r1 <= i && i < r2 && c1 <= j && j < c2) ans = min(ans, dist[i][j] + abs(i-p) + abs(j-q) + abs(a-p) + abs(b-q)); cout << ans << endl; return 0; }