#include using namespace std; #define int long long typedef pair ii; typedef vector vii; #define x first #define y second #define f(i,a,b) for(int i = (a); i < (b); ++i) int ab(int x) { return x > 0 ? x : -x; } int dst(int x, int y) { return ab(x-y); } signed main() { ios_base::sync_with_stdio(0); int n; cin >> n; vii v(n); for (int i=0; i < n; ++i) { cin >> v[i].x >> v[i].y; } sort(v.begin(), v.end()); int bot_y = v[0].y; int top_y = v[0].y; int bot_d = 0; int top_d = 0; for (int i=0; i < n; ++i) { if (v[i].x == v[0].x) { top_y = v[i].y; } } for (int i=0; i < n; ++i) { int j = i; while(j < n && v[i].x == v[j].x) j++; j--; int ntd = min(bot_d+ dst(bot_y, v[i].y)+dst(v[i].y, v[j].y), top_d+dst(top_y, v[i].y) + dst(v[i].y, v[j].y)); int nbd = min(top_d+dst(top_y, v[j].y), bot_d+dst(bot_y, v[j].y)) + dst(v[i].y, v[j].y); bot_d = nbd; top_d = ntd; bot_y = v[i].y; top_y = v[j].y; i = j; } cout << min(bot_d, top_d) + v[n-1].x-v[0].x << endl; }