#include <bits/stdc++.h>
using namespace std;
int xx1,yy1,xx2,yy2;
int dx[12]={-2,-1,1,2,2,1,-1,-2,-2,2,2,-2};
int dy[12]={1,2,2,1,-1,-2,-2,-1,2,2,-2,-2};
bool vis[30][30];
int t[30][30];
queue <int> p,q;
void bfs(int x,int y){
p.push(x);
q.push(y);
int tx,ty;
while(!p.empty()){
tx=p.front();
ty=q.front();
if(tx==1&&ty==1){
cout<<t[tx][ty]<<endl;
break;
}
for(int i=0;i<12;i++){
if(tx+dx[i]>=1&&ty+dy[i]>=1&&tx+dx[i]<=20&&ty+dy[i]<=20){
if(vis[tx+dx[i]][ty+dy[i]]==0){
vis[tx+dx[i]][ty+dy[i]]=1;
t[tx+dx[i]][ty+dy[i]]=t[tx+dx[i]][ty+dy[i]]+1;
p.push(tx+dx[i]);
q.push(ty+dy[i]);
}
}
}
p.pop();
q.pop();
}
}
int main(){
cin>>xx1>>yy1>>xx2>>yy2;
bfs(xx1,yy1);
memset(vis,0,sizeof(vis));
memset(t,0,sizeof(t));
bfs(xx2,yy2);
return 0;
}