#include<bits/stdc++.h>
using namespace std;
const int N=2e4+10;
int a[N][2],f[N][2];//到达某端点的最短距离
int cal(int x,int y)//计算列坐标改变的长度
{
return abs(x-y);
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i) cin>>a[i][0]>>a[i][1];//左边界 右边界
f[1][1]=cal(a[1][1],1);//走到最左边的端点的距离
f[1][0]=cal(a[1][1],1)+cal(a[1][1],a[1][0]); //走到最右边端点的距离
for(int i=2;i<=n;++i)
{
f[i][1]=min(f[i-1][1]+cal(a[i-1][1],a[i][0])+cal(a[i][0],a[i][1])+1,f[i-1][0]+cal(a[i-1][0],a[i][0])+cal(a[i][0],a[i][1])+1);//从上层的左右端点走到下层的左端点
f[i][0]=min(f[i-1][1]+cal(a[i-1][1],a[i][1])+cal(a[i][1],a[i][0])+1,f[i-1][0]+cal(a[i-1][0],a[i][1])+cal(a[i][1],a[i][0])+1);//从上层的左右端点走到下层的右端点
}
cout<<min(f[n][0]+cal(a[n][0],n),f[n][1]+cal(a[n][1],n));
return 0;
}