#include<bits/stdc++.h>
using namespace std;
int step[40][40];
int vis[40][40];
int dx[20]={0,1,1,2,2,2,2,-1,-1,-2,-2,-2,-2};
int dy[20]={0,-2,2,-1,-2,1,2,-2,2,-2,-1,1,2};
int maxx,maxy;
void bfs(int x,int y){
queue<pair<int,int>>q;
q.push({x,y});
vis[x][y]=1;
while(!q.empty()){
int nx=q.front().first,ny=q.front().second;
if(nx==1&&ny==1){
cout<<step[nx][ny]<<endl;
return ;
}
q.pop();
for(int i=1;i<=12;i++){
int xx=nx+dx[i],yy=ny+dy[i];
if(xx>=1&&yy>=1&&xx<=maxx&&yy<=maxy&&!vis[xx][yy]){
vis[xx][yy]=1;
step[xx][yy]=step[nx][ny]+1;
q.push({xx,yy});
}
}
}
}
int main(){
int mx[2],my[2];
cin>>mx[1]>>my[1]>>mx[2]>>my[2];
maxx=max(mx[1],mx[2])+5;
maxy=max(my[1],my[2])+5;
for(int i=1;i<=2;i++){
memset(vis,0,sizeof(vis));
memset(step,0,sizeof(step));
bfs(mx[i],my[i]);
}
return 0;
}