import
java.util.*;
import
java.util.concurrent.ConcurrentHashMap;
class
GFG{
static
int
getMinCost(
int
arr[],
int
n,
int
cost[])
{
Map<Integer,Integer> mp =
new
ConcurrentHashMap<Integer,Integer>();
mp.clear();
mp.put(
0
,
0
);
for
(
int
i =
0
; i < n; i++) {
for
(Map.Entry<Integer,Integer> it : mp.entrySet()){
int
gcd = __gcd(arr[i], it.getKey());
if
(mp.containsKey(gcd))
mp.put(gcd, Math.min(mp.get(gcd), it.getValue() + cost[i]));
else
mp.put(gcd,it.getValue() + cost[i]);
}
}
if
(!mp.containsKey(
1
))
return
-
1
;
else
return
mp.get(
1
);
}
static
int
__gcd(
int
a,
int
b)
{
return
b ==
0
? a:__gcd(b, a % b);
}
public
static
void
main(String[] args)
{
int
arr[] = {
5
,
10
,
12
,
1
};
int
cost[] = {
2
,
1
,
2
,
6
};
int
n = arr.length;
System.out.print(getMinCost(arr, n, cost));
}
}