import java.util.Scanner;
import java.lang.Math;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入4组坐标
int x1 = scanner.nextInt(), y1 = scanner.nextInt(); //第一个矩形的左下角
int x2 = scanner.nextInt(), y2 = scanner.nextInt(); //第一个矩形的右上角
int x3 = scanner.nextInt(), y3 = scanner.nextInt(); //第二个矩形的左下角
int x4 = scanner.nextInt(), y4 = scanner.nextInt(); //第二个矩形的右上角
// 计算面积并且减去重叠部分的面积
long area = (long)(x2 - x1) * (y2 - y1) + (long)(x4 - x3) * (y4 - y3);
// int overlapWidth = Math.max(0, Math.min(x2, x4) - Math.max(x1, x3)); // 重叠部分宽度
// int overlapHeight = Math.max(0, Math.min(y2, y4) - Math.max(y1, y3)); // 重叠部分高度
// int overlapWidth = Math.min(x2, x4) - Math.max(x1, x3); // 重叠部分宽度
// int overlapHeight = Math.min(y2, y4) - Math.max(y1, y3); // 重叠部分高度
// if (overlapWidth > 0 && overlapHeight > 0) { // 存在重叠部分
// area -= (long)overlapWidth * overlapHeight;
// }
int x5 = Math.max(x1,x3);
int y5 = Math.max(y1,y3); //x1,y1为重叠部分的左下角坐标
int x6 = Math.min(x2,x4); //x2,y2为重叠部分的右上角坐标
int y6 = Math.min(y2,y4);
if((x6-x5)>0 && (y6-y5)>0){
long s3 = (long)(x6-x5)*(y6-y5);
area-=s3;
}
System.out.println(area);
}
}