#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 4;
int n, x1, x2, y3, y2, rec[2 * N], num;
struct no {
  int l, r, h, flag;
};
no line[8 * N];
struct nod {
  int l, r, cover;
  long long sum;
};
nod tree[8 * N];
int cmp(no x, no y) { return x.h < y.h; }
void build(int node, int L, int R) {
  tree[node].l = L, tree[node].r = R;
  tree[node].cover = tree[node].sum = 0;
  if (L >= R) return;
  int mid = (L + R) >> 1;
  build(2 * node, L, mid);
  build(2 * node + 1, mid + 1, R);
}
void Pushup(int node) {
  if (tree[node].cover) {
    tree[node].sum = rec[tree[node].r + 1] - rec[tree[node].l];
  } else {
    if (tree[node].l == tree[node].r)
      tree[node].sum = 0;
    else
      tree[node].sum = tree[2 * node].sum + tree[2 * node + 1].sum;
  }
}
void update(int node, int L, int R, int x) {
  if (L <= tree[node].l && R >= tree[node].r) {
    tree[node].cover += x;
    Pushup(node);
    return;
  }
  int mid = (tree[node].l + tree[node].r) >> 1;
  if (L > mid)
    update(2 * node + 1, L, R, x);
  else if (R <= mid)
    update(2 * node, L, R, x);
  else {
    update(2 * node, L, mid, x);
    update(2 * node + 1, mid + 1, R, x);
  }
  Pushup(node);
}
int bi(int x) {
  int L = 1, R = num - 1, mid;
  while (L <= R) {
    mid = (L + R) >> 1;
    if (rec[mid] == x)
      return mid;
    else if (rec[mid] > x)
      R = mid - 1;
    else
      L = mid + 1;
  }
  return -1;
}
int main() {
  scanf("%d", &n);
  int cnt = 1;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d%d", &x1, &y3, &x2, &y2);
    if (x1 > x2) swap(x1, x2);
    if (y3 > y2) swap(y3, y2);
    rec[cnt] = line[cnt].l = x1;
    line[cnt].r = x2 + 1;
    line[cnt].h = y3;
    line[cnt++].flag = 1;
    line[cnt].l = x1;
    rec[cnt] = line[cnt].r = x2 + 1;
    line[cnt].h = y2 + 1;
    line[cnt++].flag = -1;
  }
  sort(line + 1, line + cnt, cmp);
  sort(rec + 1, rec + cnt);
  num = 2;
  for (int i = 2; i < cnt; i++) {
    if (rec[i] != rec[i - 1]) rec[num++] = rec[i];
  }
  build(1, 1, num - 1);
  long long ans = 0;
  for (int i = 1; i < cnt - 1; i++) {
    int fx = bi(line[i].l);
    int fy = bi(line[i].r) - 1;
    if (fx <= fy) {
      update(1, fx, fy, line[i].flag);
    }
    ans += tree[1].sum * (long long)(line[i + 1].h - line[i].h);
  }
  cout << ans << "\n";
  return 0;
}
