#include <bits/stdc++.h>
using namespace std;
bool mark[100000000];
set<int> ooxx;
int main() {
  int n, limit;
  int s;
  scanf("%d %d", &n, &limit);
  bool flag = false;
  for (int i = 0; i < n; i++) {
    scanf("%d", &s);
    ooxx.insert(s);
    if (s == 1) flag = true;
  }
  if (limit == 2) {
    printf("0\n");
    return 0;
  }
  if (flag) {
    printf("1\n");
    return 0;
  }
  int ans = 0;
  memset(mark, false, sizeof(mark));
  for (int i = 2; i < limit; i++) {
    if (!mark[i]) {
      ans++;
      if (ooxx.find(i) == ooxx.end()) {
        printf("-1\n");
        return 0;
      }
      for (int j = 1; i * j < limit; j++) mark[i * j] = true;
    }
  }
  printf("%d\n", ans);
  return 0;
}
