#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
const double INF = 1e12;
const double PI = 3.1415926535;
namespace std {
bool operator<(const complex<double>& a, const complex<double>& b) {
  return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
}
}  // namespace std
double cross(const complex<double>& a, const complex<double>& b) {
  return imag(conj(a) * b);
}
double dot(const complex<double>& a, const complex<double>& b) {
  return real(conj(a) * b);
}
int ccw(complex<double> a, complex<double> b, complex<double> c) {
  b -= a;
  c -= a;
  if (cross(b, c) > 0) return +1;
  if (cross(b, c) < 0) return -1;
  if (dot(b, c) < 0) return +2;
  if (norm(b) < norm(c)) return -2;
  return 0;
}
vector<complex<double> > graham(vector<complex<double> > v) {
  int n = v.size(), k = 0;
  sort((v).begin(), (v).end());
  vector<complex<double> > ret(2 * n);
  for (int i = 0; i < n; ret[k++] = v[i++])
    while (k >= 2 && ccw(ret[k - 2], ret[k - 1], v[i]) < 0) k--;
  for (int i = n - 2, t = k + 1; i >= 0; ret[k++] = v[i--])
    while (k >= t && ccw(ret[k - 2], ret[k - 1], v[i]) < 0) k--;
  ret.resize(k - 1);
  return ret;
}
int main() {
  int n;
  cin >> n;
  vector<complex<double> > v;
  for (int i = 0; i < (int)n; ++i) {
    int x, y;
    cin >> x >> y;
    v.push_back(complex<double>(x, y));
  }
  vector<complex<double> > vv = graham(v);
  vv.push_back(vv[0]);
  int ans = 0;
  for (int i = 0; i < (int)vv.size() - 1; ++i) {
    ans += max(abs(vv[i + 1].real() - vv[i].real()),
               abs(vv[i + 1].imag() - vv[i].imag()));
  }
  ans += 4;
  cout << ans << endl;
}
