#include using namespace std; #define ll long long #define FOR(i, j, k, in) for (int i=j; i=k; i-=in) #define REP(i, j) FOR(i, 0, j, 1) #define RREP(i, j) FOR(i, j, 0, 1) #define ALL(a) a.begin(), a.end() #define RALL(a) a.end(), a.begin() #define F first #define S second #define PB push_back #define MP make_pair #define pii pair #define MOD 1000000007 void solve() { ll n; cin >> n; vector v(n); REP(i, n) { cin >> v[i].F >> v[i].S; } sort(ALL(v)); vector> pos; vector> dp; int s=0; int e=0; while (e < n) { while (e+1 < n && v[s].F == v[e+1].F) { e++; } if (s == 0) { dp.push_back({ abs(v[s].S - v[e].S), abs(v[s].S - v[e].S) }); } else { dp.push_back({ abs(v[s].F - v[s-1].F), abs(v[s].F - v[s-1].F) }); dp[dp.size()-1].F += min( dp[dp.size()-2].F + abs(pos[pos.size()-1].F - v[e].S) + abs(v[e].S - v[s].S), dp[dp.size()-2].S + abs(pos[pos.size()-1].S - v[e].S) + abs(v[e].S - v[s].S) ); dp[dp.size()-1].S += min( dp[dp.size()-2].F + abs(pos[pos.size()-1].F - v[s].S) + abs(v[e].S - v[s].S), dp[dp.size()-2].S + abs(pos[pos.size()-1].S - v[s].S) + abs(v[e].S - v[s].S) ); } pos.push_back({ v[s].S, v[e].S }); s = e+1; e++; } cout << min(dp[dp.size()-1].F, dp[dp.size()-1].S) << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll n=1; // cin >> n; REP(i, n) { solve(); } return 0; }