#include <bits/stdc++.h>
bool flag[2000000];
int p[2000000 / 10], tol;
void init() {
  for (int i = 2; i < 2000000; i++) {
    if (!flag[i]) p[tol++] = i;
    for (int j = 0; j < tol && i * p[j] < 2000000; j++) {
      flag[i * p[j]] = 1;
      if (i % p[j] == 0) break;
    }
  }
}
int n, x;
bool has[2000000];
int main() {
  init();
  scanf("%d%d", &n, &x);
  int f = 0;
  for (int i = 0; i < n; i++) {
    int a;
    scanf("%d", &a);
    if (a < 2000000 && !flag[a]) has[a] = 1;
  }
  if (x == 2)
    puts("0");
  else if (has[1])
    puts("1");
  else {
    if (x > 2000000)
      puts("-1");
    else {
      int ans = 0, f = 0;
      for (int i = 0; i < tol; i++) {
        if (p[i] >= x) break;
        if (!has[p[i]]) {
          f = 1;
          break;
        }
        ans++;
      }
      if (f)
        puts("-1");
      else
        printf("%d\n", ans);
    }
  }
}
