#include <bits/stdc++.h>
using namespace std;
const int MN = 3e5 + 5;
const int mod = 1e9 + 7;
int n, m, a[MN], cnt[MN], f[MN], fac[MN], inv[MN];
inline long long C(int n, int m) {
  if (n < m) return 0;
  return 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod;
}
int main() {
  scanf("%d", &n);
  for (register int i = 1; i <= n; i++)
    scanf("%d", a + i), cnt[a[i]]++, m = max(m, a[i]);
  for (register int i = 1; i <= m; i++)
    for (register int j = i + i; j <= m; j += i) cnt[i] += cnt[j];
  fac[0] = fac[1] = inv[0] = inv[1] = 1;
  for (register int i = 2; i <= n; i++) fac[i] = 1ll * fac[i - 1] * i % mod;
  for (register int i = 2; i <= n; i++)
    inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;
  for (register int i = 2; i <= n; i++)
    inv[i] = 1ll * inv[i - 1] * inv[i] % mod;
  for (register int i = 1; i < 8; i++) {
    memset(f, 0, sizeof(f));
    for (register int j = m; j; j--) {
      f[j] = C(cnt[j], i);
      if (!f[j]) continue;
      for (register int k = j + j; k <= m; k += j)
        f[j] = (f[j] - f[k] + mod) % mod;
    }
    if (f[1]) return 0 * printf("%d\n", i);
  }
  puts("-1");
  return 0;
}
