#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define eps 1e-10
#define MAXN 200005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {
    res = 0;T f = 1;char c = getchar();
    while(c < '0' || c > '9') {
    	if(c == '-') f = -1;
    	c = getchar();
    }
    while(c >= '0' && c <= '9') {
    	res = res * 10 +c - '0';
    	c = getchar();
    }
    res *= f;
}
template<class T>
void out(T x) {
    if(x < 0) {x = -x;putchar('-');}
    if(x >= 10) {
    	out(x / 10);
    }
    putchar('0' + x % 10);
}
int N;
int64 l[MAXN],r[MAXN];
multiset<int64> Lb,Rb;
int64 c,d[2];
void Solve() {
    read(N);
    for(int i = 1 ; i <= N ; ++i) {
        read(l[i]);read(r[i]);
    }
    Lb.insert(l[1]);Rb.insert(l[1]);c = 0;
    for(int i = 2 ; i <= N ; ++i) {
        d[0] -= r[i] - l[i];d[1] += r[i - 1] - l[i - 1];
        int64 a = *(--Lb.end()) + d[0],b = *(Rb.begin()) + d[1];
        if(l[i] < a) {
            c += abs(a - l[i]);
            Lb.erase(Lb.find(a - d[0]));Rb.insert(a - d[1]);
            Lb.insert(l[i] - d[0]);Lb.insert(l[i] - d[0]);
        }
        else if(l[i] > b){
            c += abs(b - l[i]);
            Rb.erase(Rb.find(b - d[1]));Lb.insert(b - d[0]);
            Rb.insert(l[i] - d[1]);Rb.insert(l[i] - d[1]);
        }
        else {
            Lb.insert(l[i] - d[0]);Rb.insert(l[i] - d[1]);
        }
    }
    out(c);enter;
}
int main() {
#ifdef ivorysi
    freopen("f1.in","r",stdin);
#endif
    Solve();
}
