#include <bits/stdc++.h>
using namespace std;
const long double E = 2.71828182845904523536;
const long double pi = acos(-1);
const double eps = 1e-9;
const long long mod = 1e9 + 7;
const long long inf = 1LL << 30;
long long a[400], b[400], n, x;
map<long long, long long> mem[301];
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long dp(int i, long long g) {
  if (g == 1) return 0;
  if (i >= n) return inf;
  if (g == 0) return min(dp(i + 1, a[i]) + b[i], dp(i + 1, 0));
  long long &ret = mem[i][g];
  if (ret != 0) return ret;
  long long gc = gcd(a[i], g);
  return ret = min(dp(i + 1, gc) + b[i], dp(i + 1, g));
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
  }
  long long ans = dp(0, 0);
  if (ans == inf)
    cout << -1 << "\n";
  else
    cout << ans << "\n";
  return 0;
}
