#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
const int INF = 1000 * 1000 * 1000;
const int NMAX = 1000 * 1000;
struct pt {
  long long x, y;
} d, p1, p2;
bool cmp(pt x, pt y) { return x.x < y.x || x.x == y.x && x.y < y.y; }
long i, j, k, l, n, m, x, y;
vector<pt> a, up, down;
long long ans, mx, mn;
long long cw(pt a, pt b, pt c) {
  return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y);
}
long long gcd(long long x, long long y) {
  while (x != 0 && y != 0) {
    if (x > y)
      x %= y;
    else
      y %= x;
  }
  return x + y;
}
int main() {
  freopen("out.deb", "w", stderr);
  scanf("%I64d", &n);
  for ((i) = (0); (i) < (n); (i)++) {
    scanf("%I64d%I64d", &d.x, &d.y);
    a.push_back(d);
  }
  sort(a.begin(), a.end(), &cmp);
  p1 = a[0];
  p2 = a.back();
  up.push_back(p1);
  down.push_back(p1);
  for ((i) = (1); (i) < (a.size()); (i)++) {
    if (!(a[i].x == a[i - 1].x && a[i].y == a[i - 1].y)) {
      if (a[i].x == p2.x && a[i].y == p2.y || cw(p1, a[i], p2) < 0) {
        while (up.size() >= 2 &&
               cw(up[up.size() - 2], up[up.size() - 1], a[i]) > 0) {
          up.pop_back();
        }
        up.push_back(a[i]);
      }
      if (a[i].x == p2.x && a[i].y == p2.y || cw(p1, a[i], p2) > 0) {
        while (down.size() >= 2 &&
               cw(down[down.size() - 2], down[down.size() - 1], a[i]) < 0) {
          down.pop_back();
        }
        down.push_back(a[i]);
      }
    }
  }
  a.clear();
  for ((i) = (0); (i) < (up.size()); (i)++) a.push_back(up[i]);
  for (i = down.size() - 2; i > 0; i--) {
    a.push_back(down[i]);
  }
  for ((i) = (1); (i) < (a.size()); (i)++) {
    ans += max(abs(a[i].x - a[i - 1].x), abs(a[i].y - a[i - 1].y));
  }
  ans += max(abs(a[0].x - a[i - 1].x), abs(a[0].y - a[i - 1].y));
  printf("%I64d", ans + 4);
  return 0;
}
