#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;
}