#include <bits/stdc++.h>
using namespace std;
struct pt {
  long long x, y;
  pt() {}
  pt(long long x, long long y) : x(x), y(y) {}
};
bool ls(pt a, pt b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
long long area(pt a, pt b, pt c) {
  return c.x * (a.y - b.y) + c.y * (b.x - a.x) + a.x * b.y - a.y * b.x;
}
int main() {
  int n;
  cin >> n;
  vector<pt> a;
  for (int i = 0; i < n; ++i) {
    long long x, y;
    cin >> x >> y;
    a.push_back(pt(x - 1, y));
    a.push_back(pt(x + 1, y));
    a.push_back(pt(x, y - 1));
    a.push_back(pt(x, y + 1));
  }
  sort(a.begin(), a.end(), ls);
  n = a.size();
  vector<pt> a1, a2;
  for (int i = 1; i < n; ++i)
    if (area(a[0], a[n - 1], a[i]) >= 0)
      a1.push_back(a[i]);
    else
      a2.push_back(a[i]);
  a2.push_back(a[n - 1]);
  vector<pt> v1, v2;
  v1.push_back(a[0]);
  v2.push_back(a[0]);
  for (int i = 0; i < a1.size(); ++i) {
    while (v1.size() >= 2 &&
           area(v1[v1.size() - 2], a1[i], v1[v1.size() - 1]) <= 0)
      v1.pop_back();
    v1.push_back(a1[i]);
  }
  for (int i = 0; i < a2.size(); ++i) {
    while (v2.size() >= 2 &&
           area(v2[v2.size() - 2], a2[i], v2[v2.size() - 1]) >= 0)
      v2.pop_back();
    v2.push_back(a2[i]);
  }
  sort(v1.begin(), v1.end(), ls);
  sort(v2.begin(), v2.end(), ls);
  long long ans = 0;
  for (int i = 1; i < v1.size(); ++i)
    ans += max(abs(v1[i - 1].x - v1[i].x), abs(v1[i - 1].y - v1[i].y));
  for (int i = 1; i < v2.size(); ++i)
    ans += max(abs(v2[i - 1].x - v2[i].x), abs(v2[i - 1].y - v2[i].y));
  cout << ans << endl;
  return 0;
}
