#include <algorithm>
#include <cassert>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;

const long long LL_INF = (long long) 2e18 + 5;

struct convex_piecewise_linear {
    priority_queue<long long> negatives;
    priority_queue<long long, vector<long long>, greater<long long>> positives;
    long long negative_offset, positive_offset;
    long long zero_y;

    convex_piecewise_linear() {
        negatives = priority_queue<long long>();
        positives = priority_queue<long long, vector<long long>, greater<long long>>();
        negatives.push(-LL_INF);
        positives.push(LL_INF);
        negative_offset = positive_offset = zero_y = 0;
    }

    void add_shift(long long left, long long right) {
        negative_offset -= left;
        positive_offset += right;
    }

    void add_abs(long long center) {
        long long left = negatives.top() + negative_offset;
        long long right = positives.top() + positive_offset;
        assert(left <= right);

        if (left <= center && center <= right) {
            negatives.push(center - negative_offset);
            positives.push(center - positive_offset);
            return;
        }

        if (center < left) {
            negatives.push(center - negative_offset);
            negatives.push(center - negative_offset);
            long long move = negatives.top() + negative_offset; negatives.pop();
            zero_y += move - center;
            positives.push(move - positive_offset);
        } else {
            assert(center > right);
            positives.push(center - positive_offset);
            positives.push(center - positive_offset);
            long long move = positives.top() + positive_offset; positives.pop();
            zero_y += center - move;
            negatives.push(move - negative_offset);
        }
    }

    void print() {
        auto negatives_copy = negatives;
        auto positives_copy = positives;

        cerr << "Negatives:";

        while (!negatives_copy.empty()) {
            cerr << ' ' << negatives_copy.top() + negative_offset;
            negatives_copy.pop();
        }

        cerr << endl;
        cerr << "Positives:";

        while (!positives_copy.empty()) {
            cerr << ' ' << positives_copy.top() + positive_offset;
            positives_copy.pop();
        }

        cerr << endl;
        cerr << "Zero y: " << zero_y << endl;
    }
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;
    convex_piecewise_linear DS;
    long long prev_L, prev_R;

    for (int i = 0; i < N; i++) {
        long long L, R;
        cin >> L >> R;
        // cerr << L << ' ' << R << endl;

        if (i > 0)
            DS.add_shift(R - L, prev_R - prev_L);

        // DS.print();
        DS.add_abs(L);
        prev_L = L;
        prev_R = R;
        // DS.print();
    }

    cout << DS.zero_y << '\n';
}
