#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const double eps = 1e-6;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
const int maxn = 4000000;
struct point {
  long long x, y;
  point() {}
  point(long long a, long long b) : x(a), y(b) {}
  long long len2() const { return x * x + y * y; }
} a[maxn], b[maxn];
long long vect(const point& a, const point& b) { return a.y * b.x - a.x * b.y; }
point operator-(const point& a, const point& b) {
  return point(a.x - b.x, a.y - b.y);
}
struct cmp {
  const point& t;
  cmp(const point& a) : t(a) {}
  bool operator()(const point& a, const point& b) const {
    point ta(a - t);
    point tb(b - t);
    long long v = vect(ta, tb);
    if (v) return v > 0;
    return ta.len2() < tb.len2();
  }
};
long long mabs(long long a) { return a >= 0 ? a : -a; }
long long len(const point& a) {
  long long res = max(mabs(a.x), mabs(a.y));
  return res;
}
int main() {
  int n;
  cin >> n;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    for (int d = 0; d < 4; d++) {
      a[cnt++] = point(x + dx[d], y + dy[d]);
    }
  }
  int best = 0;
  for (int i = 1; i < cnt; i++) {
    if (a[i].x < a[best].x) {
      best = i;
    } else if (a[i].x == a[best].x && a[i].y < a[best].y) {
      best = i;
    }
  }
  swap(a[best], a[0]);
  sort(a + 1, a + cnt, cmp(a[0]));
  int k = 0;
  b[k++] = a[0];
  b[k++] = a[1];
  for (int i = 2; i < cnt; i++) {
    for (; k > 1 && vect(b[k - 1] - b[k - 2], a[i] - b[k - 1]) <= 0; k--)
      ;
    b[k++] = a[i];
  }
  long long res = 0;
  b[k] = b[0];
  for (int i = 0; i < k; i++) {
    res += len(b[i + 1] - b[i]);
  }
  cout << res << endl;
  return 0;
}
