func_code_string: #include <bits/stdc++.h>   using namespace std;   bool isprime[1000001];   void sieve() {     for (long long i = 0; i <= 1000001; i++) {       isprime[i] = true;     }     isprime[0] = false;     isprime[1] = false;     for (long long i = 2; i * i <= 1000001; i++) {       if (isprime[i] == true) {         for (long long j = i * i; j <= 1000001; j = j + i) {           isprime[j] = false;         }       }     }   }   long long gcd(long long a, long long b) {     if (a < b) {       swap(a, b);     }     if (b == 0) {       return a;     }     return gcd(b, a % b);   }   bool comparen(pair<long long, long long> a, pair<long long, long long> b) {     return a.second < b.second;   }   bool comparem(pair<long long, long long> a, pair<long long, long long> b) {     return a.first > b.first;   }   void remove(long long n, char x, string s) { ; }   void solve() {     long long t = 1;     while (t--) {       long long n;       cin >> n;       long long a[n];       for (long long i = 0; i < n; i++) {         cin >> a[i];       }       long long i = 0;       while (i < n - 1 && a[i] <= a[i + 1]) {         i++;       }       long long k = i + 1;       i++;       while (i < n - 1 && a[i] <= a[i + 1]) {         i++;       }       if (i == n) {         cout << 0 << endl;       } else if (i != n - 1 || a[0] < a[n - 1]) {         cout << -1 << endl;       } else {         cout << n - k << endl;       }     }   }   int32_t main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     solve();     return 0;   }   