#include <bits/stdc++.h>
using namespace std;
bool cmp(const pair<int, int>& a, const pair<int, int>& b) {
  long long tmp = a.first * 1LL * b.second - a.second * 1LL * b.first;
  if (tmp != 0) return tmp > 0;
  return a.first * 1LL * a.first + a.second * 1LL * a.second <
         a.first * 1LL * a.first + a.second * 1LL * a.second;
}
bool cmpxy(const pair<int, int>& a, const pair<int, int>& b) {
  if (a.second != b.second) return a.second < b.second;
  return a.first < b.first;
}
bool good(const pair<int, int>& a, const pair<int, int>& b,
          const pair<int, int>& c) {
  int x1 = b.first - a.first;
  int y1 = b.second - a.second;
  int x2 = c.first - a.first;
  int y2 = c.second - a.second;
  return x1 * 1LL * y2 - x2 * 1LL * y1 > 0;
}
void convex(vector<pair<int, int> >& a) {
  int n = a.size();
  sort(a.begin(), a.end(), cmpxy);
  a.erase(unique(a.begin(), a.end()), a.end());
  n = a.size();
  for (int i = n - 1; i >= 0; --i) {
    a[i].first -= a[0].first;
    a[i].second -= a[0].second;
  }
  sort(a.begin() + 1, a.end(), cmp);
  vector<pair<int, int> > v;
  v.push_back(a[0]);
  v.push_back(a[1]);
  for (int i = 2; i < n; i++) {
    for (; v.size() > 2 && !good(v[v.size() - 2], v[v.size() - 1], a[i]);
         v.pop_back())
      ;
    v.push_back(a[i]);
  }
  a = v;
  return;
}
vector<pair<int, int> > v;
const int dx[4] = {0, 1, 0, -1};
const int dy[4] = {1, 0, -1, 0};
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int first, second;
    scanf("%d %d", &first, &second);
    for (int j = 0; j < 4; j++)
      v.push_back(make_pair(first + dx[j], second + dy[j]));
  }
  convex(v);
  v.push_back(v[0]);
  long long ans = 0;
  for (int i = 0; i + 1 < v.size(); i++)
    ans += max(abs(v[i].first - v[i + 1].first),
               abs(v[i].second - v[i + 1].second));
  cout << ans << endl;
  return 0;
}
