One day, Twilight Sparkle is interested in how to sort a sequence of integers a1, a2, ..., an in non-decreasing order. Being a young unicorn, the only operation she can perform is a unit shift. That is, she can move the last element of the sequence to its beginning:

a1, a2, ..., an → an, a1, a2, ..., an - 1.

Help Twilight Sparkle to calculate: what is the minimum number of operations that she needs to sort the sequence?

Input

The first line contains an integer n (2 ≤ n ≤ 105). The second line contains n integer numbers a1, a2, ..., an (1 ≤ ai ≤ 105).

Output

If it's impossible to sort the sequence output -1. Otherwise output the minimum number of operations Twilight Sparkle needs to sort it.

Examples

Input

2
2 1


Output

1


Input

3
1 3 2


Output

-1


Input

2
1 2


Output

0
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;
import java.lang.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import static java.util.Collections.list;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
public class JavaApplication3 {
    
    
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
    
    static class BufPrint
    {
        final BufferedWriter bw;
        public BufPrint()
        {
            this.bw=new BufferedWriter(new OutputStreamWriter(System.out));
        }
        public void print(Object object)throws IOException
        {
            bw.append(""+object);
        }
        public void println(Object object)throws IOException
        {
            print(object);
            bw.append("\n");
        }
        public void close()throws IOException
        {
            bw.close();
        }
    }
    

        public static int GCD(int l,int r) {
        int gcd=1;
        for(int i = 1; i <= l && i <= r; ++i)
        {
            if(l % i==0 && r % i==0)
                gcd = i;
        }
    return gcd;
}
    
    public static void main(String[] args) throws IOException{
        
            FastReader sc=new FastReader(); 
            BufPrint bp=new BufPrint();
          
//                long t=sc.nextLong();
//                
//                for(int k=0;k<t;k++)
//                {
                    int n=sc.nextInt();
                    
                    int[] a=new int[n];
                    
                    int min=Integer.MAX_VALUE;
                    int max=Integer.MIN_VALUE;
                    int x=0;
                    boolean flag=false;
                    int c=0;
                    
                    for(int i=0;i<n;i++)
                    {
                        a[i]=sc.nextInt();
                        if(i>0)
                    {
                        
                        if(a[i]<a[i-1] && flag==false)
                        {
                            flag=true;
                            c++;
                            if(a[i]>a[0])
                            {
                                x=1;
                            }
                        }
                        else if(flag==true)
                        {
                            if(a[i]<a[i-1] || a[i]>a[0])
                        {
                            x=1;
                        }
                            else
                            {
                                c++;
                            }
                        }
                    }
                    }
                    if(x==1)
                    {
                        bp.println(-1);
                    }
                    else
                    {
                        bp.println(c);
                        
                    }
                    
                    
//                }
                

                bp.close();
            
    }
    
}