#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  bool friend operator<(const point &a, const point &b) {
    return a.x == b.x ? a.y < b.y : a.x < b.x;
  }
  long long friend operator*(const point &a, const point &b) {
    return a.x * b.y - a.y * b.x;
  }
} p[100000 + 5], q[2][100000 + 5];
long long ans;
int n, size[2];
int distance(point a, point b) { return max(abs(a.x - b.x), abs(a.y - b.y)); }
bool comp0(point a, point b, point c) {
  point v1 = (point){a.x - c.x, a.y - c.y}, v2 = (point){b.x - c.x, b.y - c.y};
  return (v1 * v2) <= 0;
}
bool comp1(point a, point b, point c) {
  point v1 = (point){a.x - c.x, a.y - c.y}, v2 = (point){b.x - c.x, b.y - c.y};
  return (v1 * v2) >= 0;
}
void init() {
  for (int i = 1; i <= n; i++) {
    if (size[0] < 2)
      q[0][++size[0]] = p[i];
    else {
      while (size[0] >= 2 && comp0(q[0][size[0] - 1], q[0][size[0]], p[i]))
        size[0]--;
      q[0][++size[0]] = p[i];
    }
  }
  for (int i = 1; i <= n; i++) {
    if (size[1] < 2)
      q[1][++size[1]] = p[i];
    else {
      while (size[1] >= 2 && comp1(q[1][size[1] - 1], q[1][size[1]], p[i]))
        size[1]--;
      q[1][++size[1]] = p[i];
    }
  }
}
void solve() {
  point cur = q[0][1], pos;
  cur.x -= 1;
  for (int i = 1; i <= size[0]; i++) {
    pos = q[0][i], pos.y -= 1;
    ans += distance(cur, pos), cur = pos;
  }
  pos = q[0][size[0]], pos.x += 1, ans += distance(cur, pos);
  cur = q[1][1], cur.x -= 1;
  for (int i = 1; i <= size[1]; i++) {
    pos = q[1][i], pos.y += 1;
    ans += distance(cur, pos), cur = pos;
  }
  pos = q[1][size[1]], pos.x += 1, ans += distance(cur, pos);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lld%lld", &p[i].x, &p[i].y);
  sort(p + 1, p + n + 1);
  init(), solve();
  printf("%lld", ans);
  return 0;
}
