#include <iostream>
using namespace std;
int Map[25][25];
int FinalX,FinalY;
int HorseX,HorseY;
long long int cnt;
void MakeTable(){
for(int i = 0; i <= FinalX; i++){
for(int j = 0; j <= FinalY; j++){
Map[i][j] = 1;
}
}
Map[HorseX][HorseY] = 0;
if(HorseX >= 1 && HorseY >= 1)
Map[HorseX-1][HorseY-1] = 0;
if(HorseX <= FinalX - 1 && HorseY <= FinalY - 1)
Map[HorseX+1][HorseY+1] = 0;
if(HorseX >= 2 && HorseY >= 2){
Map[HorseX-2][HorseY-2] = 0;Map[HorseX-2][HorseY-1] = 0;Map[HorseX-1][HorseY-2] = 0;
}
if(HorseX <= FinalX - 2 && HorseY <= FinalY - 2){
Map[HorseX+2][HorseY+2] = 0;Map[HorseX+2][HorseY+1] = 0;Map[HorseX+1][HorseY+2] = 0;
}
if(HorseX >= 2 && HorseY <= FinalY - 1)Map[HorseX-2][HorseY+1] = 0;
if(HorseX >= 1 && HorseY <= FinalY - 2)Map[HorseX-1][HorseY+2] = 0;
if(HorseX <= FinalX - 1 && HorseY >= 2)Map[HorseX+1][HorseY-2] = 0;
if(HorseX <= FinalX - 2 && HorseY >= 1)Map[HorseX+2][HorseY-1] = 0;
}
void SearchPathes(int x, int y){
if(Map[x][y] == 1){
if(x == FinalX && y == FinalY){
cnt++;
return;
}
else{
SearchPathes(x+1,y);
SearchPathes(x,y+1);
}
}
}
int main(){
cin >> FinalX >> FinalY >> HorseX >> HorseY;
MakeTable();
SearchPathes(0,0);
cout << cnt;
}