#include "books.h"
#include <bits/stdc++.h>
using namespace std;
long long cyc(int i, vector<int> &p, vector<int> &done) {
long long ans = 0, cur = i;
while (p[cur] != i) {
done[cur] = 1;
ans += abs(p[cur] - cur);
cur = p[cur];
}
done[cur] = 1;
ans += (long long)abs(cur - i);
return ans;
}
long long minimum_walk(vector<int> p, int s) {
int n = (int)p.size(); assert(s == 0);
set<pair<pair<int, int>, long long>> st;
vector<int> done(n);
for (int i = 0; i < n; i++) {
if (done[i]) continue;
long long mn = 1e18, mx = -1e18, cost = 0, cur = i;
while (p[cur] != i) {
mn = min(mn, cur);
mx = max(mx, cur);
done[cur] = 1;
cost += abs(cur - p[cur]);
cur = p[cur];
}
mn = min(mn, cur);
mx = max(mx, cur);
done[cur] = 1;
cost += abs(cur - i);
st.insert({{mn, mx}, cost});
}
long long ans = 0;
int r = 0;
for (auto &x : st) {
pair<int, int> p = x.first;
long long cst = x.second;
ans += cst;
if (p.first > r) {
ans += 2LL * (p.first - r);
r = p.second;
}
}
return ans;
}