https://codeforces.com/problemset/problem/454/B
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n;
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int ans=0,index=-1,minv=1e9;
for(int i=0;i<n;i++)
{
minv=min(minv,a[i]);
if(i+1<n&&a[i]>a[i+1])//找到分界点
{
index=i+1;
ans=i+1;
break;
}
}
if(index!=-1)
for(int i=index;i<n;i++)
if(a[i]>minv||(i+1<n&&a[i]>a[i+1])) //判断是不是单调的,且比前面的最小值小
{
cout<<-1;
return 0;
}
cout<<(n-ans)%n;
return 0;
}