#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const long long mod = 998244353;
inline long long add(long long v1, long long v2) {
  v1 += v2;
  if (v1 >= mod) v1 -= mod;
  if (v1 < 0) v1 += mod;
  return v1;
}
inline long long mul(long long v1, long long v2) { return v1 * v2 % mod; }
inline long long mypow(long long v, long long t) {
  long long res = 1;
  while (t) {
    if (t & 1) res = res * v % mod;
    v = v * v % mod;
    t >>= 1;
  }
  return res;
}
inline void bye() {
  puts("");
  exit(0);
}
const int N = 303030;
int a[N];
long long cnt[N];
long long dp[8][N];
long long fac[N], ifac[N];
long long C(int v1, int v2) {
  if (v1 < v2) return 0;
  return mul(fac[v1], mul(ifac[v2], ifac[v1 - v2]));
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", a + i);
    cnt[a[i]]++;
  }
  fac[0] = 1;
  for (int i = 1; i < N; i++) {
    fac[i] = fac[i - 1] * i % mod;
  }
  ifac[N - 1] = mypow(fac[N - 1], mod - 2);
  for (int i = N - 2; i >= 0; i--) {
    ifac[i] = ifac[i + 1] * (i + 1) % mod;
  }
  for (int i = 1; i < N; i++) {
    for (int j = i * 2; j < N; j += i) {
      cnt[i] += cnt[j];
    }
  }
  for (int i = 1; i < 8; i++) {
    for (int j = N - 1; j >= 1; j--) {
      dp[i][j] = C(cnt[j], i);
      for (int k = j * 2; k < N; k += j) {
        dp[i][j] = add(dp[i][j], -dp[i][k]);
      }
    }
    if (dp[i][1]) {
      printf("%d\n", i);
      return 0;
    }
  }
  puts("-1");
  return 0;
}
