#include <bits/stdc++.h>
using namespace std;
const int maxn = 300100;
const int mod = 1e9 + 7;
int add(int a, int b) {
  a += b;
  if (a >= mod) a -= mod;
  if (a < 0) a += mod;
  return a;
}
int mul(int a, int b) { return 1ll * a * b % mod; }
int binpow(int a, int b) {
  int re = 1;
  while (b) {
    if (b & 1) re = mul(re, a);
    b >>= 1;
    a = mul(a, a);
  }
  return re;
}
int inv(int a) { return binpow(a, mod - 2); }
int N, A[maxn];
int dp[22][300100];
int fac[maxn], invfac[maxn];
int cn[maxn];
int C(int N, int K) {
  if (K < 0 || N < K) return 0;
  return mul(fac[N], mul(invfac[N - K], invfac[K]));
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  for (int i = 0; i < N; ++i) {
    cin >> A[i];
    cn[A[i]]++;
  }
  for (int i = 1; i < maxn; ++i) {
    for (int j = 2 * i; j < maxn; j += i) {
      cn[i] += cn[j];
    }
  }
  fac[0] = 1;
  invfac[0] = 1;
  for (int i = 1; i <= N; ++i) {
    fac[i] = mul(fac[i - 1], i);
    invfac[i] = mul(invfac[i - 1], inv(i));
  }
  for (int i = 1; i < 20; ++i) {
    for (int j = maxn - 1; j >= 1; --j) {
      dp[i][j] = C(cn[j], i);
      for (int k = 2 * j; k < maxn; k += j) {
        dp[i][j] = add(dp[i][j], -dp[i][k]);
      }
    }
    if (dp[i][1] > 0) {
      cout << i << '\n';
      return 0;
    }
  }
  cout << -1 << '\n';
}
