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.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class LittlePonyAndSortByShift {
    public static void main(String[] args) throws NumberFormatException,
            IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bf.readLine());
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int result = -1;
        int c = 0;
        int[] a = new int[n];
        boolean wesh = false;
        for (int i = 0; i < a.length; i++) {
            a[i] = Integer.parseInt(st.nextToken());
        }
        int[] b = new int[n];
        for (int i = 0; i < b.length; i++) {
            b[i] = a[i];
        }

        Arrays.sort(b);
        boolean same = true;
        for (int i = 0; i < b.length; i++) {
            if (a[i] != b[i]) {
                same = false;
                break;
            }
        }
        boolean inverse = true;
        int j = a.length - 1;
        for (int i = 0; i < b.length; i++) {
            if (a[j] != b[i]) {
                inverse = false;
                break;
            } else
                j--;
        }
        if (same)
            System.out.println(0);
        else if (inverse) {
            if (a.length == 2)
                System.out.println(1);
            else
                System.out.println(-1);
        } 
        else {
            int cp = a[0];
            int tp = -1;
            c = 0;
            int tpc = 0;
            int tpi = 0;
            for (int i = 0; i < a.length; i++) {
                if (a.length - 1 > i) {
                    if (a[i + 1] < a[i]) {
                        tp = a[i];
                        tpc++;
                        tpi = i;
                    }
                }
            }
            if (tpc > 1)
                System.out.println(-1);
            else {
                for (int i = tpi + 1; i < a.length; i++) {
                    if (a[i] > cp) {
                        result = -1;
                        wesh = true;
                        break;
                    } else {
                        c++;
                    }

                }

                if (wesh)
                    System.out.println(-1);
                else {
                    result = c > 0 ? c : result;
                    System.out.println(result);
                }
            }
        }
    }
}
