#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  bool operator<(Point other) const {
    return y < other.y || y == other.y && x < other.x;
  }
  Point operator-(Point other) {
    Point p;
    p.x = x - other.x;
    p.y = y - other.y;
    return p;
  }
};
const int MAXN = 100005;
Point ps[MAXN];
Point cvhull[MAXN];
Point P0;
set<Point> s;
long long CrossProduct(Point a, Point b) { return a.x * b.y - a.y * b.x; }
double dist(Point a, Point b) {
  return sqrt((double)(a.x - b.x) * (a.x - b.x) +
              (double)(a.y - b.y) * (a.y - b.y));
}
bool comp(Point a, Point b) { return CrossProduct(a - P0, b - P0) > 0; }
void GetConvexHull(Point *dest, int &destn, Point *input, int n) {
  int minindex = 0;
  destn = 0;
  if (n == 1) {
    dest[0] = input[0];
    destn = 1;
    return;
  } else if (n == 2) {
    dest[0] = input[0];
    dest[1] = input[1];
    dest[2] = input[0];
    destn = 3;
    return;
  }
  for (int i = 0; i < n; i++)
    if (input[i] < input[minindex]) minindex = i;
  P0 = input[minindex];
  swap(input[minindex], input[n - 1]);
  sort(input, input + n - 1, comp);
  dest[destn++] = P0;
  dest[destn++] = input[0];
  dest[destn++] = input[1];
  for (int i = 2; i < n - 1; i++) {
    while (destn > 1) {
      long long cp = CrossProduct(dest[destn - 1] - dest[destn - 2],
                                  input[i] - dest[destn - 1]);
      if (cp < 0)
        destn--;
      else if (cp == 0) {
        if (dist(input[i], dest[destn - 2]) >
            dist(dest[destn - 1], dest[destn - 2]))
          destn--;
        else
          break;
      } else
        dest[destn++] = input[i];
    }
    if (destn == 1) dest[destn++] = input[i];
  }
  if (destn >= 3 && CrossProduct(dest[destn - 1] - dest[destn - 2],
                                 dest[0] - dest[destn - 1]) == 0)
    destn--;
  if (destn == 2) dest[destn++] = dest[0];
  return;
}
int main() {
  int n, n0;
  long long ans = 4;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    Point p;
    scanf("%I64d%I64d", &(p.x), &(p.y));
    s.insert(p);
  }
  n = 0;
  for (set<Point>::iterator iter = s.begin(); iter != s.end(); iter++)
    ps[n++] = *iter;
  GetConvexHull(cvhull, n0, ps, n);
  for (int i = 0; i < n0; i++)
    ans += max(abs(cvhull[i].x - cvhull[(i + 1) % n0].x),
               abs(cvhull[i].y - cvhull[(i + 1) % n0].y));
  printf("%I64d\n", ans);
  return 0;
}
