-157778763 218978790 976692563 591093088
 -1 -4 1 4
 -999999999 -1000000000 -1 0
 1000000000 1000000000 1000000000 1000000000
 -2 -3 -2 1
 -1000000000 -999999999 1000000000 999999999
 0 -1 0 1
 -999999999 -999999999 999999999 999999999
 -946749893 -687257665 -539044455 -443568671
 -26644507 -867720841 975594569 264730225
 309857887 -687373066 663986893 403321752
 -2 -2 -2 0
 0 -2 0 2
 0 -1 2 1
 -2 -2 2 2
 -999999999 -1000000000 999999999 1000000000
 -330513944 -970064382 500608496 369852884
 0 -3 0 3
 0 0 2 2
 -946749893 -687257666 -539044455 -443568670
 -330513944 -970064383 500608496 369852885
 -1000000000 -1000000000 1000000000 1000000000
 0 -1 2 3
 -999999999 -999999999 -1 -1
 309857887 -687373065 663986893 403321751
 -482406510 -512306895 412844236 -168036049
 0 0 2 0
 0 0 0 0
 -471257905 -685885154 782342299 909511044
 -482406510 -512306894 412844236 -168036050
 -157778763 218978791 976692563 591093087
 -411495869 33834653 -234317741 925065545
 -2 -3 2 3
 -411495869 33834652 -234317741 925065546
 -26644507 -867720842 975594569 264730226
 -537640548 -254017710 62355638 588691834
 -471257905 -685885153 782342299 909511043
 -1 -3 1 3
 1000000000 999999999 1000000000 999999999
 1 0 5 6
 -537640548 -254017711 62355638 588691835

211076501291102387 14 500000000000000000 1 3 2000000000000000000 2 1999999998000000001 49676664342971903 567493356068872580 193123336596257367 2 3 5 13 2000000000000000000 556817654843544374 4 5 49676664750677342 556817655674666815 2000000002000000001 8 499999999000000001 193123336242128360 154104366473536355 2 1 999994501061310398 154104365578285608 211076500156631060 78953311064369599 18 78953311241547728 567493357071111657 252811256874252458 999994499807710193 11 1 18 252811257474248645
//package e_contest_6;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class rectangle {
public static void main(String[] args) throws IOException{
	Scanner sc =new Scanner(System.in);
	int x1 = sc.nextInt(), y1 =sc.nextInt(), x2 = sc.nextInt(), y2 = sc.nextInt();
	if(x1<0) {
		x2-=x1;
		x1 = 0;
	}
	if(y1<0) {
		y2-=y1;
		y1 = 0;
	}
	if(x1%2==1) {
		long yEven1 = y1;
		long yEven2 = y2;
		long yOdd1 = y1;
		long yOdd2 = y2;
		if(y1%2==1)
			yEven1--;
		if(y2%2==1)
			yEven2++;
		if(y1%2==0)
			yOdd1--;
		if(y2%2==0)
			yOdd2++;
		long blockEven = (yEven2-yEven1)/2;
		long blockOdd = (yOdd2-yOdd1)/2;
		long ans = blockEven*((x2-x1)/2+1);
		ans+=blockOdd*(x2-x1)/2;
		if(y1==y2&&y2%2==0)
			System.out.println(0);
		else if(y1==y2)
			System.out.println(1);
		else
		System.out.println(ans);
	}else {
		long yEven1 = y1;
		long yEven2 = y2;
		long yOdd1 = y1;
		long yOdd2 = y2;
		if(y1%2==1)
			yEven1--;
		if(y2%2==1)
			yEven2++;
		if(y1%2==0)
			yOdd1--;
		if(y2%2==0)
			yOdd2++;
		long blockEven = (yEven2-yEven1)/2;
		long blockOdd = (yOdd2-yOdd1)/2;
		long ans = blockEven*((x2-x1)/2);
		ans+=blockOdd*((x2-x1)/2+1);
		if(y1==y2&&y2%2==1)
			System.out.println(0);
		else if(y1==y2)
			System.out.println(1);
		else
		System.out.println(ans);
	}
}
static class Scanner 
{
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}

	public String next() throws IOException 
	{
		while (st == null || !st.hasMoreTokens()) 
			st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}

	public int nextInt() throws IOException {return Integer.parseInt(next());}
	
	public long nextLong() throws IOException {return Long.parseLong(next());}

	public String nextLine() throws IOException {return br.readLine();}
	
	public double nextDouble() throws IOException
	{
		String x = next();
		StringBuilder sb = new StringBuilder("0");
		double res = 0, f = 1;
		boolean dec = false, neg = false;
		int start = 0;
		if(x.charAt(0) == '-')
		{
			neg = true;
			start++;
		}
		for(int i = start; i < x.length(); i++)
			if(x.charAt(i) == '.')
			{
				res = Long.parseLong(sb.toString());
				sb = new StringBuilder("0");
				dec = true;
			}
			else
			{
				sb.append(x.charAt(i));
				if(dec)
					f *= 10;
			}
		res += Long.parseLong(sb.toString()) / f;
		return res * (neg?-1:1);
	}
	
	public boolean ready() throws IOException {return br.ready();}


}

}
