#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
void add(unordered_map <int, int>& m, int num, int plus) {
if(!m[num]) {
m[num] = 0;
}
m[num] += plus;
}
unordered_map <int, int> rasklad(int n) {
unordered_map <int, int> res;
while (n % 2 == 0) {
n /= 2;
add(res, 2, 1);
}
while (n % 3 == 0) {
n /= 3;
add(res, 3, 1);
}
for (int i = 5; i * i <= n; i += 6) {
while (n % i == 0) {
n /= i;
add(res, i, 1);
}
}
return res;
}
int main() {
int n, m;
cin >> n >> m;
unordered_map <int, int> n_r = rasklad(n);
unordered_map <int, int> m_r = rasklad(m);
int res = 0;
for (auto i : m_r) {
add(n_r, i.first, -i.second);
}
for (auto i : n_r) {
res += abs(i.second);
}
cout << res;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgYWRkKHVub3JkZXJlZF9tYXAgPGludCwgaW50PiYgbSwgaW50IG51bSwgaW50IHBsdXMpIHsKCWlmKCFtW251bV0pIHsKCQltW251bV0gPSAwOwoJfSAKCQoJbVtudW1dICs9IHBsdXM7Cn0KCnVub3JkZXJlZF9tYXAgPGludCwgaW50PiByYXNrbGFkKGludCBuKSB7Cgl1bm9yZGVyZWRfbWFwIDxpbnQsIGludD4gcmVzOwoJCgl3aGlsZSAobiAlIDIgPT0gMCkgewoJCW4gLz0gMjsKCQlhZGQocmVzLCAyLCAxKTsKCQkKCX0KCQoJd2hpbGUgKG4gJSAzID09IDApIHsKCQluIC89IDM7CgkJYWRkKHJlcywgMywgMSk7Cgl9CgkKCWZvciAoaW50IGkgPSA1OyBpICogaSA8PSBuOyBpICs9IDYpIHsKCQl3aGlsZSAobiAlIGkgPT0gMCkgewoJCQluIC89IGk7CgkJCWFkZChyZXMsIGksIDEpOwoJCX0KCX0KCQoJcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKSB7CglpbnQgbiwgbTsKCWNpbiA+PiBuID4+IG07CgoJdW5vcmRlcmVkX21hcCA8aW50LCBpbnQ+IG5fciA9IHJhc2tsYWQobik7Cgl1bm9yZGVyZWRfbWFwIDxpbnQsIGludD4gbV9yID0gcmFza2xhZChtKTsKCWludCByZXMgPSAwOwoJCglmb3IgKGF1dG8gaSA6IG1fcikgewoJCWFkZChuX3IsIGkuZmlyc3QsIC1pLnNlY29uZCk7Cgl9CgkKCWZvciAoYXV0byBpIDogbl9yKSB7CgkJcmVzICs9IGFicyhpLnNlY29uZCk7Cgl9CgkKCWNvdXQgPDwgcmVzOwkKCQoJcmV0dXJuIDA7Cn0=