#include<iostream>
#include<math.h>
using namespace std;
int b_x, b_y, c_x, c_y;
long long map[22][22];
bool f(int i, int j)
{
if ((abs(i - c_x) == 1 && abs(j - c_y) == 2)
|| (abs(i - c_x) == 2 && abs(j - c_y) == 1))
return false;
return true;
}
long long dfs(int i, int j)
{
if (map[i][j] != 0) return map[i][j];
//若i,j越界,或者被马吃掉,或者来到的是马所在的位置
if (i > b_x || j > b_y
|| f(i, j) == false
|| (i == c_x && j == c_y))return 0;
//i,j位置合法,且到达目标点b_x,b_y
if (i == b_x && j == b_y) return 1;
map[i][j] = dfs(i + 1, j) + dfs(i, j + 1);
return map[i][j];
}
int main()
{
cin >> b_x >> b_y >> c_x >> c_y;
cout << dfs(0, 0);
return 0;
}