#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > cur[2];
vector<pair<int, int> > pos;
bool wrong(int i, int j) {
  int n = (int)cur[j].size();
  long long ax = cur[j][n - 2].first, ay = cur[j][n - 2].second,
            bx = cur[j][n - 1].first, by = cur[j][n - 1].second,
            cx = pos[i].first, cy = pos[i].second;
  long long AX = bx - ax, AY = by - ay, BX = cx - ax, BY = cy - ay;
  if (j == 0)
    return AX * BY - BX * AY <= 0;
  else
    return AX * BY - BX * AY >= 0;
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    int dir[][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
    for (int d = 0; d < 4; d++) {
      int nx = x + dir[d][0], ny = y + dir[d][1];
      pos.push_back(make_pair(nx, -ny));
    }
  }
  sort(pos.begin(), pos.end());
  n = (int)pos.size();
  for (int i = 0; i < n; i++) {
    pos[i] = make_pair(pos[i].first, -pos[i].second);
  }
  unsigned long long res = 0;
  for (int j = 0; j < 2; j++) {
    cur[j].push_back(pos[0]);
    cur[j].push_back(pos[1]);
    for (int i = 2; i < n; i++) {
      while (wrong(i, j) && cur[j].size() > 1) {
        cur[j].erase(cur[j].begin() + (cur[j].size() - 1));
      }
      cur[j].push_back(pos[i]);
    }
    for (int i = 0; i < (int)cur[j].size(); i++) {
      if (i) {
        res += max(abs(cur[j][i].first - cur[j][i - 1].first),
                   abs(cur[j][i].second - cur[j][i - 1].second));
      }
    }
  }
  cout << res << endl;
}
