#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x, y;
  Point() : x(0), y(0) {}
  Point(int _x, int _y) : x(_x), y(_y) {}
  Point operator+(const Point& point) const {
    return Point(x + point.x, y + point.y);
  }
  Point operator-(const Point& point) const {
    return Point(x - point.x, y - point.y);
  }
  long long operator*(const Point& point) {
    return x * (long long)point.y - point.x * (long long)y;
  }
  bool operator<(const Point& point) {
    if (x != point.x) {
      return x < point.x;
    }
    return y < point.y;
  }
  void scan() { scanf("%d%d", &x, &y); }
  long long length2() { return x * (long long)x + y * (long long)y; }
};
const Point dx[4] = {Point(1, 0), Point(0, -1), Point(-1, 0), Point(0, 1)};
Point ar[500000];
int len = 0, num = 0, uk = 0, n;
Point hull[500000];
void add(Point v) { hull[uk++] = v; }
bool comp(const Point& c, const Point& d) {
  Point a = c - ar[0];
  Point b = d - ar[0];
  long long pro;
  pro = a * b;
  if (pro == 0) {
    return a.length2() < b.length2();
  }
  return pro > 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    Point tek, now;
    tek.scan();
    for (int j = 0; j < 4; j++) {
      now = tek + dx[j];
      ar[len++] = now;
      if (ar[len - 1] < ar[num]) {
        num = len - 1;
      }
    }
  }
  swap(ar[0], ar[num]);
  sort(ar + 1, ar + len, comp);
  add(ar[0]);
  add(ar[1]);
  for (int i = 2; i < len; i++) {
    Point v1, v2;
    v1 = hull[uk - 1] - hull[uk - 2];
    v2 = ar[i] - hull[uk - 1];
    while (v1 * v2 <= 0 && uk > 2) {
      uk--;
      v1 = hull[uk - 1] - hull[uk - 2];
      v2 = ar[i] - hull[uk - 1];
    }
    add(ar[i]);
  }
  add(ar[0]);
  long long ans = 0;
  for (int i = 0; i < uk - 1; i++) {
    Point tek = hull[i + 1] - hull[i];
    ans += max(abs(tek.x), abs(tek.y));
  }
  printf("%d", ans);
  return 0;
}
