#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5, mod = 1e9 + 7;
int dp[N][10];
int a[N], cnt[N], sp[N], cntOfDivs[N];
int gcd(int x, int y) {
  if (x > y) {
    swap(x, y);
  }
  while (x) {
    int t = x;
    y %= x;
    x = y;
    y = t;
  }
  return y;
}
void addDivs(vector<pair<int, int>>& fct, int pos, int curd) {
  if (pos == int(fct.size())) {
    cntOfDivs[curd] += 1;
    return;
  }
  addDivs(fct, pos + 1, curd);
  for (int i = 1; i <= fct[pos].second; ++i) {
    curd *= fct[pos].first;
    addDivs(fct, pos + 1, curd);
  }
}
void addByMod(int& x, int val) {
  x += val;
  if (x >= mod) {
    x -= mod;
  }
  if (x < 0) {
    x += mod;
  }
}
int fact[N], powx[35];
int rev(int x) {
  int res = 1;
  powx[0] = x;
  for (int i = 1; i <= 30; ++i) {
    powx[i] = (powx[i - 1] * 1ll * powx[i - 1]) % mod;
  }
  int v = mod - 2;
  for (int i = 30; i >= 0; --i) {
    int bit = (v >> i) & 1;
    if (bit) {
      res = (res * 1ll * powx[i]) % mod;
    }
  }
  return res;
}
int C(int n, int k) {
  if (n < k) {
    return 0;
  }
  int res = (fact[n] * 1ll * rev(fact[k])) % mod;
  return (res * 1ll * rev(fact[n - k])) % mod;
}
int main() {
  fact[0] = 1;
  for (int i = 1; i < N; ++i) {
    sp[i] = i;
    fact[i] = (fact[i - 1] * 1ll * i) % mod;
  }
  for (int i = 2; i * i < N; ++i) {
    if (sp[i] == i) {
      for (int j = i * i; j < N; j += i) {
        sp[j] = min(sp[j], i);
      }
    }
  }
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    int x;
    cin >> x;
    dp[x][1] += 1;
    int tmp = x;
    vector<pair<int, int>> fct;
    while (tmp != 1) {
      int curSp = sp[tmp];
      int curCnt = 0;
      while (curSp == sp[tmp]) {
        curCnt += 1;
        tmp /= sp[tmp];
      }
      fct.push_back(make_pair(curSp, curCnt));
    }
    addDivs(fct, 0, 1);
  }
  if (dp[1][1]) {
    cout << "1" << endl;
    return 0;
  }
  for (int ans = 2; ans <= 7; ++ans) {
    for (int i = N - 1; i >= 1; --i) {
      for (int j = 2 * i; j < N; j += i) {
        addByMod(dp[i][ans], -dp[j][ans]);
      }
      addByMod(dp[i][ans], C(cntOfDivs[i], ans));
    }
    if (dp[1][ans] != 0) {
      cout << ans << endl;
      return 0;
    }
  }
  cout << "-1" << endl;
  return 0;
}
