import java.util.*;
import java.io.*;

public class PintaAla {
    private static ArrayList<Double> muutoskohdat = new ArrayList<Double>();
    private static ArrayList<Pystysivu> suorakulmiot = new ArrayList<Pystysivu>();

    private static final int ALKU = 1;
    private static final int LOPPU = 2;

    public static void main(String[] args) throws Exception {
        Scanner lukija = new Scanner(new File("pinta-ala.txt"));
        while (lukija.hasNext()) {
            double x1 = Double.parseDouble(lukija.next());
            double y1 = Double.parseDouble(lukija.next());
            double x2 = Double.parseDouble(lukija.next());
            double y2 = Double.parseDouble(lukija.next());
            muutoskohdat.add(x1);
            muutoskohdat.add(x2);
            suorakulmiot.add(new Pystysivu(y1, x1, x2, ALKU));
            suorakulmiot.add(new Pystysivu(y2, x1, x2, LOPPU));
        }
        Collections.sort(muutoskohdat);
        Collections.sort(suorakulmiot);
        double vanha = 0;
        double tulos = 0;
        double  korkeus = 0;
        for (double xkohta : muutoskohdat) {
            double leveys = xkohta - vanha;
            tulos += leveys * korkeus;
            korkeus = 0;
            int taso = 0;
            double ykohta = 0;
            for (Pystysivu sivu : suorakulmiot) {
                if (sivu.x1 > xkohta || sivu.x2 <= xkohta) continue;
                if (taso > 0) korkeus += (sivu.y - ykohta);
                if (sivu.muutos == ALKU) taso++;
                if (sivu.muutos == LOPPU) taso--;
                ykohta = sivu.y;
            }
            vanha = xkohta;
        }
        System.out.println(tulos);
    }
}

class Pystysivu implements Comparable<Pystysivu> {
    public double y;
    public double x1, x2;
    public int muutos;

    public Pystysivu(double y, double x1, double x2, int muutos) {
        this.y = y;
        this.x1 = x1;
        this.x2 = x2;
        this.muutos = muutos;
    }

    public int compareTo(Pystysivu toinen) {
        if (this.y > toinen.y) return 1;
        if (this.y < toinen.y) return -1;
        if (this.x1 > toinen.x1) return 1;
        if (this.x1 < toinen.x1) return -1;
        if (this.x2 > toinen.x2) return 1;
        if (this.x2 < toinen.x2) return -1;
        if (this.muutos < toinen.muutos) return 1;
        if (this.muutos > toinen.muutos) return -1;
        return 0;
    }
}
