#include using namespace std; int main(){ cin.tie(nullptr)->ios::sync_with_stdio(false); int H,W,A,B; cin>>H>>W>>A>>B; int R1,C1,R2,C2; cin>>R1>>C1>>R2>>C2; int P,Q; cin>>P>>Q; A--,B--,R1--,C1--,R2--,C2--,P--,Q--; // 場外判定 auto outof = [&](unsigned int y, unsigned int x){ return (y >= H || x >= W); }; // 4方向の近傍 UDLR const int dy[4] = {-1, 1, 0, 0}; const int dx[4] = {0, 0, -1, 1}; const int INF=1<<30; int ans=INF; auto bfs=[&](int i,int j){ vector dist(H,vector(W,INF)); dist[i][j]=0; queue> que; que.push({i,j}); while(que.size()){ auto [y,x]=que.front(); que.pop(); for(int d=0;d<4;d++){ uint ny=y+dy[d],nx=x+dx[d]; if(outof(ny,nx)) continue; if(dist[ny][nx]>dist[y][x]+1){ dist[ny][nx]=dist[y][x]+1; que.push({ny,nx}); } } } return dist; }; auto ds=bfs(A,B); auto dg=bfs(P,Q); for(int i=R1;i<=R2;i++) for(int j=C1;j<=C2;j++){ ans=min(ans,ds[i][j]+dg[i][j]+dg[A][B]); } cout<