#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <typename T> using ordered_set = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
#ifdef LOCAL
#include "C:\CP\debug.h"
#else
#define debug(...)
#endif
using ll = long long;
const char nl = '\n';
#define fi first
#define se second
#define pb push_back
typedef vector<int> vi;
#define sz(v) (int)(v.size())
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define unq(x) sort(all(x)) , x.erase(unique(all(x)),x.end())
#include <vector>
#include <algorithm>
int minSwapsToSort(std::vector<int>& nums) {
int n = nums.size();
std::vector<std::pair<int, int>> arrPos(n);
for (int i = 0; i < n; i++) {
arrPos[i] = {nums[i], i};
}
std::sort(arrPos.begin(), arrPos.end());
std::vector<bool> visited(n, false);
int swaps = 0;
for (int i = 0; i < n; i++) {
if (visited[i] || arrPos[i].second == i)
continue;
int cycleSize = 0;
int j = i;
while (!visited[j]) {
visited[j] = true;
j = arrPos[j].second;
cycleSize++;
}
if (cycleSize > 0)
swaps += (cycleSize - 1);
}
return swaps;
}
void leftCyclicShift(std::vector<int>& nums) {
if (nums.empty()) return;
int first = nums[0];
for (int i = 0; i < nums.size() - 1; i++) {
nums[i] = nums[i + 1];
}
nums[nums.size() - 1] = first;
}
void Solve() {
int n; cin >> n;
vector<int> arr(n); for(auto& x: arr)cin >> x;
vector<int> brr(arr);
sort(all(brr));
if(arr == brr){
cout << 0 << nl;
return;
}
int ans = INT_MAX;
for(int shifts = 1; shifts < n; ++shifts) {
leftCyclicShift(arr);
if(arr == brr){
ans = min(ans,shifts);
break;
}
int mn = minSwapsToSort(arr);
ans = min(ans,shifts + mn);
}
cout << ans << nl;
}
signed main() {
ios::sync_with_stdio(false); cin.tie(0);
#ifdef LOCAL
freopen("input.txt", "rt", stdin);
freopen("output.txt", "w", stdout);
#endif
int tt = 1;
//cin >> tt;
while ( tt--) {
Solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULG51bGxfdHlwZSxsZXNzPFQ+LHJiX3RyZWVfdGFnLHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CiAKI2lmZGVmIExPQ0FMIAojaW5jbHVkZSAiQzpcQ1BcZGVidWcuaCIKI2Vsc2UKI2RlZmluZSBkZWJ1ZyguLi4pCiNlbmRpZgoKdXNpbmcgbGwgPSBsb25nIGxvbmc7CmNvbnN0IGNoYXIgbmwgPSAnXG4nOwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CiNkZWZpbmUgc3oodikgKGludCkodi5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgcmFsbCh4KSB4LnJiZWdpbigpLHgucmVuZCgpCiNkZWZpbmUgdW5xKHgpIHNvcnQoYWxsKHgpKSAsIHguZXJhc2UodW5pcXVlKGFsbCh4KSkseC5lbmQoKSkKCiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgppbnQgbWluU3dhcHNUb1NvcnQoc3RkOjp2ZWN0b3I8aW50PiYgbnVtcykgewogICAgaW50IG4gPSBudW1zLnNpemUoKTsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+IGFyclBvcyhuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgYXJyUG9zW2ldID0ge251bXNbaV0sIGl9OwogICAgfQogICAgc3RkOjpzb3J0KGFyclBvcy5iZWdpbigpLCBhcnJQb3MuZW5kKCkpOwogICAgc3RkOjp2ZWN0b3I8Ym9vbD4gdmlzaXRlZChuLCBmYWxzZSk7CiAgICBpbnQgc3dhcHMgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAodmlzaXRlZFtpXSB8fCBhcnJQb3NbaV0uc2Vjb25kID09IGkpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGludCBjeWNsZVNpemUgPSAwOwogICAgICAgIGludCBqID0gaTsKICAgICAgICB3aGlsZSAoIXZpc2l0ZWRbal0pIHsKICAgICAgICAgICAgdmlzaXRlZFtqXSA9IHRydWU7CiAgICAgICAgICAgIGogPSBhcnJQb3Nbal0uc2Vjb25kOwogICAgICAgICAgICBjeWNsZVNpemUrKzsKICAgICAgICB9CiAgICAgICAgaWYgKGN5Y2xlU2l6ZSA+IDApCiAgICAgICAgICAgIHN3YXBzICs9IChjeWNsZVNpemUgLSAxKTsKICAgIH0KICAgIHJldHVybiBzd2FwczsKfQoKCnZvaWQgbGVmdEN5Y2xpY1NoaWZ0KHN0ZDo6dmVjdG9yPGludD4mIG51bXMpIHsKICAgIGlmIChudW1zLmVtcHR5KCkpIHJldHVybjsKICAgIGludCBmaXJzdCA9IG51bXNbMF07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bXMuc2l6ZSgpIC0gMTsgaSsrKSB7CiAgICAgICAgbnVtc1tpXSA9IG51bXNbaSArIDFdOwogICAgfQogICAgbnVtc1tudW1zLnNpemUoKSAtIDFdID0gZmlyc3Q7Cn0KCiAKdm9pZCBTb2x2ZSgpIHsKICAgaW50IG47IGNpbiA+PiBuOwogICB2ZWN0b3I8aW50PiBhcnIobik7IGZvcihhdXRvJiB4OiBhcnIpY2luID4+IHg7CiAgIHZlY3RvcjxpbnQ+IGJycihhcnIpOwogICBzb3J0KGFsbChicnIpKTsKICAgaWYoYXJyID09IGJycil7CiAgICAgIGNvdXQgPDwgMCA8PCBubDsKICAgICAgcmV0dXJuOwogICB9CiAgIGludCBhbnMgPSBJTlRfTUFYOwogICBmb3IoaW50IHNoaWZ0cyA9IDE7IHNoaWZ0cyA8IG47ICsrc2hpZnRzKSB7CiAgICAgIGxlZnRDeWNsaWNTaGlmdChhcnIpOwogICAgICBpZihhcnIgPT0gYnJyKXsKICAgICAgICAgYW5zID0gbWluKGFucyxzaGlmdHMpOwogICAgICAgICBicmVhazsKICAgICAgfQogICAgICBpbnQgbW4gPSBtaW5Td2Fwc1RvU29ydChhcnIpOwogICAgICBhbnMgPSBtaW4oYW5zLHNoaWZ0cyArIG1uKTsKICAgfQogICBjb3V0IDw8IGFucyA8PCBubDsKfQogCnNpZ25lZCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOwogICAgI2lmZGVmIExPQ0FMCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAicnQiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgI2VuZGlmCgoKICAgIGludCB0dCA9IDE7CiAgICAvL2NpbiA+PiB0dDsKICAgIHdoaWxlICggdHQtLSkgewogICAgICBTb2x2ZSgpOwogICAgfSAKICAgIHJldHVybiAwOwp9