#include <bits/stdc++.h>
using namespace std;
struct in {
  long long x, y;
} pnt[100005], res[100005];
bool mult(in sp, in ep, in op) {
  return (sp.x - op.x) * (ep.y - op.y) >= (ep.x - op.x) * (sp.y - op.y);
}
bool operator<(const in &l, const in &r) {
  return l.y < r.y || (l.y == r.y && l.x < r.x);
}
int graham(in pnt[], int n, in res[]) {
  int i, len, k = 0, top = 1;
  sort(pnt, pnt + n);
  if (n == 0) return 0;
  res[0] = pnt[0];
  if (n == 1) return 1;
  res[1] = pnt[1];
  if (n == 2) return 2;
  res[2] = pnt[2];
  for (i = 2; i < n; i++) {
    while (top && mult(pnt[i], res[top], res[top - 1])) top--;
    res[++top] = pnt[i];
  }
  len = top;
  res[++top] = pnt[n - 2];
  for (i = n - 3; i >= 0; i--) {
    while (top != len && mult(pnt[i], res[top], res[top - 1])) top--;
    res[++top] = pnt[i];
  }
  return top;
}
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    for (int i = 0; i < n; i++) scanf("%lld %lld", &pnt[i].x, &pnt[i].y);
    int cnt = graham(pnt, n, res);
    int l = 0;
    for (int i = 0; i < cnt; i++) {
      pnt[l].x = res[i].x - 1;
      pnt[l++].y = res[i].y;
      pnt[l].x = res[i].x + 1;
      pnt[l++].y = res[i].y;
      pnt[l].x = res[i].x;
      pnt[l++].y = res[i].y - 1;
      pnt[l].x = res[i].x;
      pnt[l++].y = res[i].y + 1;
    }
    cnt = graham(pnt, l, res);
    res[cnt] = res[0];
    long long len = 0;
    for (int i = 0; i < cnt; i++) {
      long long tx = abs(res[i].x - res[i + 1].x);
      long long ty = abs(res[i].y - res[i + 1].y);
      len += (long long)max(tx, ty);
    }
    printf("%lld\n", len);
  }
}
