import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
public class Main {
public static void main
(String[] args
) {
while(sc.hasNextDouble()){
double s=0;
double res[]=new double[4];
double res1[]=new double[4];
double res2[]=new double[4];
double point1[]=new double[4];
double point2[]=new double[4];
for(int i=0;i<point1.length;i++){
point1[i]=sc.nextDouble();
}
for(int i=0;i<point2.length;i++){
point2[i]=sc.nextDouble();
}
// 第一个矩形左上角的坐标
res1
[0]=Math.
min(point1
[0], point1
[2]);//X1
res1
[1]=Math.
max(point1
[1], point1
[3]);//Y1
//第一个矩形右下角的坐标
res1
[2]=Math.
max(point1
[0], point1
[2]);//x2
res1
[3]=Math.
min(point1
[1], point1
[3]);//y2
// 第二个矩形左上角的坐标
res2
[0]=Math.
min(point2
[0], point2
[2]);//x1
res2
[1]=Math.
max(point2
[1], point2
[3]);//y1
// 第二个矩形右下角的坐标
res2
[2]=Math.
max(point2
[0], point2
[2]);//x2
res2
[3]=Math.
min(point2
[1], point2
[3]);//y2
// 如果矩形重合和相离 s=0
if(res2[0]>=res1[2]||res2[2]<=res1[0]||res2[3]>=res1[1]||res2[1]<=res1[3]){
s=0;
}
else{
//否者矩形相交的 坐标
res
[0]=Math.
max(res1
[0], res2
[0]);
res
[1]=Math.
min(res1
[1],res2
[1]);
res
[2]=Math.
min(res1
[2],res2
[2]);
res
[3]=Math.
max(res1
[3],res2
[3]);
s=(res[2]-res[0])*(res[1]-res[3]);
}
System.
out.
println(fo.
format(s
));
}
}
}
//java/8358