#include<iostream>
#include<queue>
using namespace std;
int tx,ty,mx,my;
bool vis[25][25]={0};
long long cnt;
struct path
{
int x,y;
};
int main()
{
scanf("%d%d%d%d",&tx,&ty,&mx,&my);
vis[mx][my]=true;
vis[mx+2][my+1]=true;
vis[mx+2][my-1]=true;
vis[mx-2][my+1]=true;
vis[mx-2][my-1]=true;
vis[mx+1][my+2]=true;
vis[mx+1][my-2]=true;
vis[mx-1][my+2]=true;
vis[mx-1][my-2]=true;
queue<path>q;
q.push({0,0});
while(!q.empty())
{
path a=q.front();
q.pop();
if(a.x<0||a.y<0||a.x>=25||a.y>=25)
{
continue;
}
if(vis[a.x][a.y])
{
continue;
}
if(a.x==tx&&a.y==ty)
{
cnt++;
continue;
}
q.push({a.x+1,a.y});
q.push({a.x,a.y+1});
}
printf("%d",cnt);
return 0;
}