#include<bits/stdc++.h>
using namespace std;
int a[21][21],sx,sy,ans;
bool v[21][21];
struct text{
int x,y;
};
int dx[12]={1,2,2,2,2,1,-1,-2,-2,-2,-2,-1};
int dy[12]={2,2,1,-1,-2,-2,-2,-2,-1,1,2,2};
queue<text> q;
void bfs(){
memset(a,0,sizeof(a));
memset(v,0,sizeof(v));
q=queue<text> ();
q.push((text){sx,sy});
v[sx][sy]=1;
a[sx][sy]=0;
while(!q.empty()){
text t=q.front();
q.pop();
for(int i=0;i<12;i++){
int nx=t.x+dx[i];
int ny=t.y+dy[i];
if(nx>0&&nx<=sx&&ny>0&&ny<=sy&&!v[nx][ny]){
q.push((text){nx,ny});
a[nx][ny]=a[t.x][t.y]+1;
v[nx][ny]=1;
if(nx==1&&ny==1){
cout<<a[nx][ny]<<endl;
return;
}
}
}
}
}
int main(){
int t=2;
while(t--){
cin>>sx>>sy;
ans=0;
bfs();
/*
for(int i=1;i<=sx;i++){
for(int j=1;j<=sy;j++){
printf("%d ",a[i][j]);
}
puts("");
}
之前的调试*/
if(sx<=2&&sy<=2) cout<<"0";
}
return 0;
}