#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 7;
const double eps = 1e-8;
const double pi = acos(-1);
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
int sign(double x) { return (x > eps) - (x < -eps); }
struct P {
  double x, y;
  P() {}
  P(double x, double y) {
    this->x = x;
    this->y = y;
  }
  P operator+(const P &c) const { return P(x + c.x, y + c.y); }
  P operator-(const P &c) const { return P(x - c.x, y - c.y); }
  P operator*(const double &c) const { return P(x * c, y * c); }
  P operator/(const double &c) const { return P(x / c, y / c); }
  bool operator<(const P &c) const {
    int f = sign(x - c.x);
    return f ? f < 0 : sign(y - c.y) < 0;
  }
  bool operator==(const P &c) const { return !sign(x - c.x) && !sign(y - c.y); }
  bool operator!=(const P &c) const { return !(*this == c); }
  bool operator>(const P &c) const { return !(*this == c) && !(*this < c); }
} p[N], g[N];
double cross(P a, P b) { return a.x * b.y - b.x * a.y; }
int convexhull(P *p, int n, P *ch) {
  sort(p, p + n);
  int m = 0;
  for (int i = (0); i < (n); i++) {
    while (m > 1 && sign(cross(ch[m - 1] - ch[m - 2], p[i] - ch[m - 2])) <= 0)
      --m;
    ch[m++] = p[i];
  }
  int k = m;
  for (int i = n - 2; i >= 0; --i) {
    while (m > k && sign(cross(ch[m - 1] - ch[m - 2], p[i] - ch[m - 2])) <= 0)
      --m;
    ch[m++] = p[i];
  }
  if (n > 1) --m;
  return m;
}
int n, x, y, xx, yy, m, ans;
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  cin >> n;
  for (int i = (1); i < (n + 1); i++) {
    cin >> x >> y;
    for (int i = (0); i < (4); i++) {
      xx = x + dx[i];
      yy = y + dy[i];
      p[m++] = P(xx, yy);
    }
  }
  m = convexhull(p, m, g);
  p[m] = p[0];
  for (int i = (0); i < (m); i++) {
    ans += max(abs(g[i].x - g[i + 1].x), abs(g[i].y - g[i + 1].y));
  }
  cout << ans;
  return 0;
}
