#include <iostream>
#define N 0
#define M 1
int f[2][100] = { 0 };
int c[2][100] = { 0 };
void factor(int num, int pos)
{
int facs = 0;
for (int i = 2; i <= num; i++)
{
if (num%i == 0)
{
int j = 0;
for (j = 0; f[pos][j] != 0; j++)
{
if (f[pos][j] == i)
{
c[pos][j] += 1;
break;
}
}
if (j == facs)
{
f[pos][facs] = i;
c[pos][facs] = 1;
facs += 1;
}
num /= i;
i = 1;
}
}
}
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
if (m < n)
{
cout << -1;
return 0;
}
factor(n, N);
factor(m, M);
//for (int j = 0; f[N][j] != 0; j++) cout << f[N][j] << " " << c[N][j] << endl;
int flag = 1,i;
for (i = 0; f[M][i]!=0 && f[N][i] != 0; i++)
{
if (f[N][i] != f[M][i])
{
flag = 0;
break;
}
}
if (f[N][i] != f[M][i]) flag = 0;
if (flag)
{
int max = -1;
for (i = 0; f[M][i] != 0; i++) //N, M is the same.
{
int count = 0;
while (c[N][i] < c[M][i])
{
c[N][i] *= 2;
count++;
}
if (count > max) max = count;
}
cout << max;
}
else
cout << -1;
return 0;
}