#include<iostream>
using namespace std;
int dx[2] = {1,0};
int dy[2] = {0,1};
int a[35][35];
bool vis[35][35];
int cnt;
int end_x, end_y, horse_x, horse_y;
void dfs(int x, int y){
if(a[x][y] == 3){
cnt++;
return ;
}
for(int i = 0; i < 2; i++){
int nx = dx[i] + x;
int ny = dy[i] + y;
if(nx < 0 || ny < 0 || nx > end_x || ny > end_y)
continue;
if(a[nx][ny] != 1 && vis[nx][ny] == false){
vis[nx][ny] = true;
dfs(nx, ny);
vis[nx][ny] = false;
}
}
}
int main(){
cin >> end_x >> end_y >> horse_x >> horse_y;
if(horse_x-2 >= 0 && horse_y-1 >= 0)
a[horse_x-2][horse_y-1] = 1;
if(horse_x-1 >= 0 && horse_y-2 >= 0)
a[horse_x-1][horse_y-2] = 1;
if(horse_x+1 >= 0 && horse_y-2 >= 0)
a[horse_x+1][horse_y-2] = 1;
if(horse_x+2 >= 0 && horse_y-1 >= 0)
a[horse_x+2][horse_y-1] = 1;
if(horse_x+2 >= 0 && horse_y+1 >= 0)
a[horse_x+2][horse_y+1] = 1;
a[horse_x][horse_y] = 1;
if(horse_x+1 >= 0 && horse_y+2 >= 0)
a[horse_x+1][horse_y+2] = 1;
if(horse_x-1 >= 0 && horse_y+2 >= 0)
a[horse_x-1][horse_y+2] = 1;
if(horse_x-2 >= 0 && horse_y+1 >= 0)
a[horse_x-2][horse_y+1] = 1;
a[end_x][end_y] = 3;
vis[0][0] = true;
dfs(0,0);
cout << cnt;
return 0;
}// 8 6 0 4
// 1617