import java.util.Arrays;
import java.util.Objects;
import java.util.Random;
import java.util.Scanner;

/**
 * @author supermejane
 * @date 2025/10/6
 * @description BGN62 mex
 */
public class Main {
	
  	//1.观察再开始做,一开始就直接用死算很麻烦还不一定能通过
  	//2.三种情况 
//    一:数组没0且不完全相同 -> 可能不能相等,输出-1
//    二:数组完全相同 -> 输出0
//    三:上述都不满足 -> 排序计算差分,将 diff[i] > 1的加起来就行
  //3.注意精度
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        long[] a = new long[n], diff = new long[n + 1];

        boolean isDiff = false, having_zero = false;
        for (int i = 0; i < n; i++) {
            a[i] = in.nextLong();
            if (a[i] == 0) having_zero = true;
            if (i > 0 && a[i] != a[i - 1]) isDiff = true;
        }

        if (!having_zero && isDiff) System.out.println(-1);
        else if (!isDiff) System.out.println(0);
        else {
            long result = 0;
            //sort(a, 0, a.length - 1, true);
            Arrays.sort(a);
            for (int i = 1; i < n; i++) {
                diff[i] = i == 0 ? a[i] : a[i] - a[i - 1];
                if (diff[i] > 1) result += diff[i] - 1;
            }
            System.out.println(result + 1);
        }
    }

    //快排
//    public static void sort(int[] a, int l, int r, boolean ascending) {
//        if (r <= l) return;
//        int pivot = partition(a, l, r, ascending);
//        sort(a, l, pivot - 1, ascending);
//        sort(a, pivot + 1, r, ascending);
//    }
//
//    public static int partition(int[] a, int l, int r, boolean ascending) {
//        int index = new Random().nextInt(r - l + 1) + l;
//        swap(a, index, r);
//
//        int p1 = l - 1, p2;
//        for (p2 = l; p2 < r; p2++) {
//            //降序
//            if (ascending ? a[p2] < a[r] : a[p2] > a[r]) {
//                swap(a, p2, ++p1);
//            }
//        }
//        swap(a, r, ++p1);
//        return p1;
//    }
//
//    public static void swap(int[] a, int i, int j) {
//        if (a[i] != a[j]) {
//            int tmp = a[i];
//            a[i] = a[j];
//            a[j] = tmp;
//        }
//    }
//
//    @Test
//    public void test() {
//        int[] a = new int[]{4, 1, 5, 6, 2, 7, 8, 3};
//        sort(a, 0, a.length - 1, true);
//        for (int j : a) {
//            System.out.println(j);
//        }
//    }
}