#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=20;
int n,a[N],cnt=-1,ans=-1;
struct node
{
int val,id;
}b[N];
bool cmp(node a1,node a2)
{
return a1.val<a2.val;
}
int f()
{
int c=0;
for(int i=1;i<=n;i++)
{
if(abs(a[i]-a[i+1])!=1) c++;
}
return c;
}
void dfs(int k)
{
int x=f();
if(!x&&a[1]<a[2])
{
ans=k-1;
return;
}
if(ans||k+x-1>cnt||k>cnt) return;
for(int i=2;i<=n;i++)
{
if(abs(a[i]-a[i+1])==1) continue;
for(int l=1,r=i;l<r;l++,r--) swap(a[l],a[r]);
dfs(k+1);
for(int l=1,r=i;l<r;l++,r--) swap(a[l],a[r]);
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i].val);
b[i].id=i;
}
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++) a[b[i].id]=i;
a[n+1]=n+1;
while(true)
{
cnt++;
dfs(1);
if(ans!=-1)
{
printf("%d",ans);
return 0;
}
}
return 0;
}