//
//./E<test
#include <bits/stdc++.h>
#define endl '\\n'
#define cediv(a,b) ((a)%(b)==0?((a)/(b)):((a)/(b))+1)
#define fi first
#define se second
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
template<typename T>
inline T umax(T &u, T v){return u = max(u, v);}
template<typename T>
inline T umin(T &u, T v){return u = min(u, v);}
#define N 200020
pair<ll,ll> datas[N]; // Vertices // Convex hull algorithm never permute initial vertices.
int sorted_idx[N]; // Idx of 'sorted' datas.
int ans[N]; // Elements of convex hull
inline bool CCW(const pair<ll,ll>& a, const pair<ll,ll>& b, const pair<ll,ll>& c){
return (b.fi-a.fi)*(c.se-a.se)-(b.se-a.se)*(c.fi-a.fi)>0; // 변 위의 점도 필요하다면 >=
}
inline long long dist(const pair<ll,ll>& a, const pair<ll,ll>& b){
return (a.fi-b.fi)*(a.fi-b.fi)+(a.se-b.se)*(a.se-b.se);
}
class comp_c{
public:
pair<ll,ll> mp;
comp_c(pair<ll,ll> minpos){
mp=minpos;
}
bool operator()(int a_idx, int b_idx){
pair<ll,ll> a=datas[a_idx], b=datas[b_idx];
ll com=(a.fi-mp.fi)*(b.se-mp.se)-(a.se-mp.se)*(b.fi-mp.fi);
if(com==0) return dist(a,mp)<dist(b,mp);
else return com>0;
}
};
int convex_hull(int n){ // # number of vertices
// Phase 1: Sort
int m_idx=0;
for(int i=1; i<n; i++) if(datas[m_idx]>datas[i]) m_idx=i;
for(int i=0; i<n; i++) sorted_idx[i]=i;
swap(sorted_idx[0], sorted_idx[m_idx]);
sort(sorted_idx,sorted_idx+n,comp_c(datas[m_idx]));
// Phase 2: Get Convexhull
int st[N]; // Elements of st are the idx of datas
int cur=0, st_cnt=0; // cur : # of visited elements of s, st_cnt : # of elements in stack
while(cur<n){
while(st_cnt>=2 && !CCW(datas[st[st_cnt-2]],datas[st[st_cnt-1]],datas[sorted_idx[cur]])) st_cnt--;
st[st_cnt++]=sorted_idx[cur++];
}
for(int i=0; i<st_cnt; i++) ans[i]=st[i]; // Counter clockwise, starts with leftmost vertices.
return st_cnt;
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n;
cin>>n;
for(int i=0; i<n; i++){
cin>>datas[i].fi>>datas[i].se;
}
if(n==1) cout<<4<<endl;
else{
int cnt=convex_hull(n);
//cout<<"convex cnt : "<<cnt<<endl;
ll res=0;
for(int i=0; i<cnt; i++){
int cur=ans[i], last=(i==0?ans[cnt-1]:ans[i-1]);
res+=max(abs(datas[cur].fi-datas[last].fi), abs(datas[cur].se-datas[last].se));
}
res+=4;
if(cnt==2 && abs(datas[ans[0]].fi-datas[ans[1]].fi)==abs(datas[ans[0]].se-datas[ans[1]].se)) res++;
cout<<res<<endl;
}
return 0;
}