#include <bits/stdc++.h>
using namespace std;
typedef struct Point {
  long long x, y;
  Point(long long x = 0, long long y = 0) : x(x), y(y) {}
  Point operator-(const Point& B) { return Point(x - B.x, y - B.y); }
} Point;
int cmp(const Point& a, const Point& b) {
  return a.x < b.x || (a.x == b.x && a.y < b.y);
}
Point p[400005], q[400005];
long long Cross(const Point& A, const Point& B) {
  return A.x * B.y - A.y * B.x;
}
int dis(const Point& a, const Point& b) {
  return max(abs(a.x - b.x), abs(a.y - b.y));
}
int n0, n, N;
long long ans;
int Andrew_convexhull() {
  sort(p, p + n, cmp);
  int m = 0;
  for (int i = 0; i < n; i++) {
    while (m > 1 && Cross(q[m - 1] - q[m - 2], p[i] - q[m - 2]) <= 0) m--;
    q[m++] = p[i];
  }
  for (int k = m, i = n - 2; i >= 0; i--) {
    while (m > k && Cross(q[m - 1] - q[m - 2], p[i] - q[m - 2]) <= 0) m--;
    q[m++] = p[i];
  }
  if (n > 1) m--;
  return m;
}
int main(void) {
  scanf("%d", &n0);
  long long x, y;
  for (int i = 0; i < n0; i++) {
    scanf("%lld%lld", &x, &y);
    p[n++] = Point(x + 1, y);
    p[n++] = Point(x - 1, y);
    p[n++] = Point(x, y + 1);
    p[n++] = Point(x, y - 1);
  }
  N = Andrew_convexhull(), q[N] = q[0];
  for (int i = 1; i <= N; i++) ans += dis(q[i], q[i - 1]);
  printf("%lld", ans);
  return 0;
}
