#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
vector <int> L;
long long bit[N * 4];
void add(int x, int v) {
for (int i = x; i <= 400000; i += i & -i) bit[i] += v;
}
long long get(int x) {
long long ret = 0;
for (int i = x; i > 0; i -= i & -i) ret += bit[i];
return ret;
}
int pos(int x) {
return upper_bound(L.begin(), L.end(), x) - L.begin();
}
struct vt {
int l, d, r, u;
vt(int l = 0, int d = 0, int r = 0, int u = 0) : l(l), r(r), u(u), d(d) {}
bool operator < (const vt & a) const {
return u > a.u;
}
} b[N];
struct hr {
int l, r, u, d;
hr(int l = 0, int d = 0, int r = 0, int u = 0) : l(l), r(r), u(u), d(d) {}
bool operator < (const hr & a) const {
return d == a.d ? l < a.l : d < a.d;
}
} a[N];
bool cmp1(vt a, vt b) {
return a.l == b.l ? a.d < b.d : a.l < b.l;
}
bool cmp2(vt a, vt b) {
return a.d < b.d;
}
int na, nb;
vector <hr> x;
vector <vt> y;
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int l, d, r, u;
scanf("%d %d %d %d", &l, &d, &r, &u);
if (l > r) swap(l, r);
if (u < d) swap(u, d);
L.push_back(l);
L.push_back(r);
if (u == d) a[na++] = hr(l, d, r, u);
else b[nb++] = vt(l, d, r, u);
}
long long ans = 0;
sort(a, a + na);
for (int i = 0; i < na; i++) {
if (i < na - 1 && a[i].u == a[i + 1].u && a[i].r >= a[i + 1].l) {
a[i + 1].l = min(a[i + 1].l, a[i].l);
a[i + 1].r = max(a[i + 1].r, a[i].r);
} else {
ans += a[i].r - a[i].l + 1;
x.push_back(a[i]);
}
}
sort(b, b + nb, cmp1);
for (int i = 0; i < nb; i++) {
if (i < nb - 1 && b[i].l == b[i + 1].l && b[i].u >= b[i + 1].d) {
b[i + 1].d = min(b[i].d, b[i + 1].d);
b[i + 1].u = max(b[i + 1].u, b[i].u);
} else {
ans += b[i].u - b[i].d + 1;
y.push_back(b[i]);
}
}
sort(y.begin(), y.end(), cmp2);
int p = 0;
priority_queue <vt> q;
map <int, int> mp;
sort(L.begin(), L.end());
unique(L.begin(), L.end());
for (auto & a : x) {
while (p < y.size() && a.d >= y[p].d) {
q.push(y[p]);
int h = y[p].l;
if (mp[h] == 0) add(pos(h), 1);
mp[h]++;
p++;
}
while (q.size() && a.d > q.top().u) {
int h = q.top().l;
mp[h]--;
if (mp[h] == 0) add(pos(h), -1);
q.pop();
}
ans += get(pos(a.l) - 1) - get(pos(a.r));
}
cout << ans << endl;
return 0;
}