
应该是被特殊情况卡了罢
#include<bits/stdc++.h>
#define LL long long
#define F(x,s,t) for(int x=s;x<=t;x++)
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int gcd(int a, int b){
return b ? gcd(b, a % b) : a;
}
const int N = 5e5 + 10;
int a[N], b[N];
bool h[N];
int main(){
int n = read();
int m = read();
int Gcd = 0;
F(i, 1, n){
a[i] = read();
Gcd = gcd(Gcd, a[i]);
}
F(i, 1, n)a[i] /= Gcd;
F(i, 1, m)b[i] = read();
sort(b + 1, b + m + 1);
LL ans = 0;
F(i, 1, n){
for(int j = m; j >= 1; j -- ){
if(b[j] == 1 && a[i] != 1){
puts("-1");
return 0;
}
while(a[i] % b[j] == 0){
a[i] /= b[j];
ans ++ ;
}
if(a[i] == 1)break;
}
if(a[i] != 1){
puts("-1");
return 0;
}
}
printf("%lld\n", ans);
return 0;
}