#include <bits/stdc++.h>
using namespace std;
struct pt {
  double x, y;
};
bool cmp(pt a, pt b) { return a.x < b.x || a.x == b.x && a.y < b.y; }
bool 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) < 0;
}
bool ccw(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) > 0;
}
void convex_hull(vector<pt>& a) {
  if (a.size() == 1) return;
  sort(a.begin(), a.end(), &cmp);
  pt p1 = a[0], p2 = a.back();
  vector<pt> up, down;
  up.push_back(p1);
  down.push_back(p1);
  for (size_t i = 1; i < a.size(); ++i) {
    if (i == a.size() - 1 || cw(p1, a[i], p2)) {
      while (up.size() >= 2 && !cw(up[up.size() - 2], up[up.size() - 1], a[i]))
        up.pop_back();
      up.push_back(a[i]);
    }
    if (i == a.size() - 1 || ccw(p1, a[i], p2)) {
      while (down.size() >= 2 &&
             !ccw(down[down.size() - 2], down[down.size() - 1], a[i]))
        down.pop_back();
      down.push_back(a[i]);
    }
  }
  a.clear();
  for (size_t i = 0; i < up.size(); ++i) a.push_back(up[i]);
  for (size_t i = down.size() - 2; i > 0; --i) a.push_back(down[i]);
}
long getD(pt a, pt b) {
  if (a.x == b.x) return abs(a.y - b.y);
  if (a.y == b.y) return abs(a.x - b.x);
  long dx = abs(a.x - b.x);
  long dy = abs(a.y - b.y);
  return max(dx, dy);
}
int main() {
  long n;
  cin >> n;
  pt a, b;
  vector<pt> t;
  for (int i = 0; i < n; i++) {
    cin >> a.x >> a.y;
    b = a;
    b.x--;
    t.push_back(b);
    b = a;
    b.y--;
    t.push_back(b);
    b = a;
    b.x++;
    t.push_back(b);
    b = a;
    b.y++;
    t.push_back(b);
  }
  convex_hull(t);
  long res = 0;
  for (int i = 0; i < t.size() - 1; i++) {
    res += getD(t[i], t[i + 1]);
  }
  res += getD(t[0], t[t.size() - 1]);
  cout << res << endl;
  return 0;
}
