#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  point() {}
  point(int xx, int yy) : x(xx), y(yy) {}
  bool operator<(point p) const {
    if (y != p.y) return (y < p.y);
    return (x < p.x);
  }
};
vector<point> vp;
vector<point> convex;
point pivot;
long long ccw(point a, point b, point c) {
  return a.x * b.y + b.x * c.y + c.x * a.y - a.y * b.x - b.y * c.x - c.y * a.x;
}
long long dist(point a, point b) {
  return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}
bool cmpAngle(point p1, point p2) {
  long long w = ccw(pivot, p1, p2);
  if (w < 0)
    return false;
  else if (w > 0)
    return true;
  return dist(pivot, p1) < dist(pivot, p2);
}
void convex_hull() {
  int N = vp.size();
  int bpidx = min_element(vp.begin(), vp.end()) - vp.begin();
  convex.clear();
  pivot = vp[bpidx];
  swap(vp[0], vp[bpidx]);
  sort(vp.begin(), vp.end(), cmpAngle);
  for (int i = 0; i < N; i++) {
    while (convex.size() >= 2 && ccw(convex[convex.size() - 2],
                                     convex[convex.size() - 1], vp[i]) <= 0)
      convex.pop_back();
    convex.push_back(vp[i]);
  }
  convex.push_back(pivot);
}
int main() {
  int n;
  long long ans = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    point p;
    scanf("%d %d", &p.x, &p.y);
    vp.push_back(point(p.x + 1, p.y));
    vp.push_back(point(p.x, p.y + 1));
    vp.push_back(point(p.x - 1, p.y));
    vp.push_back(point(p.x, p.y - 1));
  }
  convex_hull();
  for (int i = 0; i < convex.size() - 1; i++) {
    int MAX = max(abs((double)(convex[i].x - convex[i + 1].x)),
                  abs((double)(convex[i].y - convex[i + 1].y)));
    ans += (long long)MAX;
  }
  printf("%lld\n", ans);
  return 0;
}
