#include <bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
using namespace std;
const int N = 3e5 + 5;
const int MOD = 1e9 + 7;
int a[N], cnt[N], mul_of[N];
int dp[10][N];
int fac[N], invfac[N];
long long q_pow(long long n, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = (res * n) % MOD;
    n = (n * n) % MOD;
    k >>= 1;
  }
  return res;
}
void init() {
  fac[0] = 1;
  for (int i = 1; i < N; i++) fac[i] = (1LL * fac[i - 1] * i) % MOD;
  invfac[N - 1] = q_pow(fac[N - 1], MOD - 2);
  for (int i = N - 2; i >= 0; i--)
    invfac[i] = (1LL * invfac[i + 1] * (i + 1)) % MOD;
}
long long C(int n, int m) {
  if (n < m) return 0;
  return (1LL * fac[n] * invfac[m]) % MOD * invfac[n - m] % MOD;
}
int main() {
  int n;
  init();
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), cnt[a[i]]++;
  for (int i = 1; i < N; i++) {
    for (int j = i; j < N; j += i) {
      mul_of[i] += cnt[j];
    }
  }
  for (int i = 1; i <= 7; i++) {
    for (int j = N - 1; j > 0; j--) {
      int sum = 0;
      for (int k = 2 * j; k < N; k += j) sum = (sum + dp[i][k]) % MOD;
      dp[i][j] = (C(mul_of[j], i) - sum) % MOD;
    }
    if (dp[i][1]) {
      printf("%d\n", i);
      return 0;
    }
  }
  printf("-1\n");
  return 0;
}
