#include <bits/stdc++.h>
using namespace std;
int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int ans=0;
int a1,a2,a3,a4;
int maps[5][9]={0};
struct point{
int x;
int y;
}n,now,next;
int visit[5][9]={0};
void DFS(point a){
now.x=a.x;
now.y=a.y;
if(now.x==a1&&now.y==a2){
ans++;
return;
}
visit[a.x][a.y]=1;
for(int i=0;i<4;i++){
for(int j=0;j<2;j++){
if(maps[now.x+move[i][j]][now.y+move[i][j]]==0&&visit[now.x+move[i][j]][now.y+move[i][j]]==0
&&now.x+move[i][j]>=0&&now.x+move[i][j]<=4&&now.y+move[i][j]>=0&&now.y+move[i][j]<=9){
next.x=now.x+move[i][j];
next.y=now.y+move[i][j];
DFS(next);
}
}
}
}
queue <point> q;
int main(){
cin>>a1>>a2>>a3>>a4;
n.x=0;
n.y=0;//起始位置
maps[a3][a4]=1;
maps[a3-2][a4+1]=1;
maps[a3-2][a4-1]=1;
maps[a3-1][a4+2]=1;
maps[a3-1][a4-2]=1;
maps[a3+2][a4+1]=1;
maps[a3+2][a4-1]=1;
maps[a3+1][a4+2]=1;
maps[a3+1][a4-2]=1;
//记录不能走的坐标
DFS(n);
cout<<ans;
}