#include <bits/stdc++.h>
using namespace std;
template <class cType>
bool IsIntersecting(pair<pair<cType, cType>, pair<cType, cType> > segment1,
                    pair<pair<cType, cType>, pair<cType, cType> > segment2,
                    int* parallel = NULL,
                    pair<double, double>* intersection_point = NULL) {
  int dummy_parallel;
  pair<double, double> dummy_intersection_point;
  if (parallel == NULL) parallel = &dummy_parallel;
  if (intersection_point == NULL)
    intersection_point = &dummy_intersection_point;
  double xx1 = segment1.first.first;
  double yy1 = segment1.first.second;
  double xx2 = segment1.second.first;
  double yy2 = segment1.second.second;
  double xx3 = segment2.first.first;
  double yy3 = segment2.first.second;
  double xx4 = segment2.second.first;
  double yy4 = segment2.second.second;
  double ua, ub;
  *parallel = 0;
  if (fabs((yy4 - yy3) * (xx2 - xx1) - (xx4 - xx3) * (yy2 - yy1)) <= 1e-11) {
    *parallel = 1;
    return 0;
  }
  ua = ((xx4 - xx3) * (yy1 - yy3) - (yy4 - yy3) * (xx1 - xx3)) /
       ((yy4 - yy3) * (xx2 - xx1) - (xx4 - xx3) * (yy2 - yy1));
  ub = ((xx2 - xx1) * (yy1 - yy3) - (yy2 - yy1) * (xx1 - xx3)) /
       ((yy4 - yy3) * (xx2 - xx1) - (xx4 - xx3) * (yy2 - yy1));
  double& xi = (*intersection_point).first;
  double& yi = (*intersection_point).second;
  xi = xx1 + ua * (xx2 - xx1);
  yi = yy1 + ua * (yy2 - yy1);
  return ((xi + 1e-11 >= fmin(xx1, xx2)) && (xi - 1e-11 <= fmax(xx1, xx2)) &&
          (yi + 1e-11 >= fmin(yy1, yy2)) && (yi - 1e-11 <= fmax(yy1, yy2)) &&
          (xi + 1e-11 >= fmin(xx3, xx4)) && (xi - 1e-11 <= fmax(xx3, xx4)) &&
          (yi + 1e-11 >= fmin(yy3, yy4)) && (yi - 1e-11 <= fmax(yy3, yy4)));
}
int main() {
  vector<pair<int, int> > p;
  int n;
  cin >> n;
  int minx = 1023123123, maxx = -1023123123, miny = 1023123123,
      maxy = -1023123123;
  for (int(i) = 0; (i) < (n); ++(i)) {
    int bufx, bufy;
    scanf("%d%d", &bufx, &bufy);
    p.push_back(make_pair(bufx, bufy));
    minx = min((minx), (bufx));
    maxx = max((maxx), (bufx));
    miny = min((miny), (bufy));
    maxy = max((maxy), (bufy));
  }
  int minyminx = 1023123123, maxyminx = -1023123123, minyplusx = 1023123123,
      maxyplusx = -1023123123;
  for (int(i) = 0; (i) < (n); ++(i)) {
    int x = p[i].first;
    int y = p[i].second;
    minyminx = min((minyminx), (y - x));
    maxyminx = max((maxyminx), (y - x));
    minyplusx = min((minyplusx), (y + x));
    maxyplusx = max((maxyplusx), (y + x));
  }
  minyminx--;
  maxyminx++;
  minyplusx--;
  maxyplusx++;
  minx--;
  maxx++;
  miny--;
  maxy++;
  vector<pair<pair<int, int>, pair<int, int> > > vs;
  vs.push_back(make_pair(make_pair(minx, 0), make_pair(minx, 1)));
  vs.push_back(make_pair(make_pair(0, maxyminx), make_pair(1, maxyminx + 1)));
  vs.push_back(make_pair(make_pair(0, maxy), make_pair(1, maxy)));
  vs.push_back(make_pair(make_pair(0, maxyplusx), make_pair(1, maxyplusx - 1)));
  vs.push_back(make_pair(make_pair(maxx, 0), make_pair(maxx, 1)));
  vs.push_back(make_pair(make_pair(0, minyminx), make_pair(1, minyminx + 1)));
  vs.push_back(make_pair(make_pair(0, miny), make_pair(1, miny)));
  vs.push_back(make_pair(make_pair(0, minyplusx), make_pair(1, minyplusx - 1)));
  vector<pair<int, int> > points;
  for (int(i) = 0; (i) < (((int)vs.size())); ++(i)) {
    pair<double, double> buf;
    int dummy;
    IsIntersecting(vs[i], vs[(i + 1) % 8], &dummy, &buf);
    points.push_back(make_pair((int)buf.first, (int)buf.second));
  }
  int ret = 0;
  for (int(i) = 0; (i) < (((int)points.size())); ++(i)) {
    ret += max(abs(points[(i + 1) % 8].first - points[i].first),
               abs(points[(i + 1) % 8].second - points[i].second));
  }
  cout << ret << endl;
  return 0;
}
