#include <bits/stdc++.h>
const int oo = 2139063143;
const int N = 310000;
const int P = 1000000007;
using namespace std;
inline void sc(int &x) {
  x = 0;
  static int p;
  p = 1;
  static char c;
  c = getchar();
  while (!isdigit(c)) {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c - 48);
    c = getchar();
  }
  x *= p;
}
inline void print(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) print(x / 10);
  putchar(x % 10 + '0');
}
inline void pr(int x) { print(x), putchar('\n'); }
int n;
int jc[N], inv[N];
void init() {
  jc[0] = jc[1] = inv[0] = inv[1] = 1;
  for (int i = 2; i <= n; i++)
    jc[i] = 1LL * i * jc[i - 1] % P,
    inv[i] = 1LL * (P - P / i) * inv[P % i] % P;
  for (int i = 2; i <= n; i++) inv[i] = 1LL * inv[i] * inv[i - 1] % P;
}
int C(int n, int m) {
  if (m > n) return 0;
  return 1LL * jc[n] * inv[m] % P * inv[n - m] % P;
}
int cnt[N];
int f[N];
int main() {
  sc(n);
  int sb, ma = 0;
  for (int i = 1; i <= n; i++) {
    sc(sb);
    ++cnt[sb];
    ma = max(sb, ma);
  }
  init();
  for (int an = 1; an <= 7; an++) {
    for (int i = ma; i >= 1; i--) {
      f[i] = 0;
      int sum = 0;
      for (int j = i; j <= ma; j += i) sum += cnt[j];
      if (sum < an) continue;
      f[i] = C(sum, an);
      for (int j = i + i; j <= ma; j += i) f[i] = (f[i] - f[j] + P) % P;
    }
    if (f[1]) {
      pr(an);
      return 0;
    }
  }
  pr(-1);
  return 0;
}
