-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

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

public class Main2 {
	
	
	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);
		
		long x1 = sc.nextLong(), y1 = sc.nextLong(), x2 = sc.nextLong(), y2 = sc.nextLong();
		long n = x2 - x1 + 1, m = (y2 - y1 + 2) / 2;
		out.println(n / 2 * (m - 1) + (n+1) / 2 * m);
		out.flush();
		out.close();
	}

	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();}


	}
}
