#include<bits/stdc++.h>
using namespace std;
#define N 305
void numcpy(int a[], int b[])
{
for(int i = 0; i <= b[0]; ++i)
a[i] = b[i];
}
void Multiply(int a[], int b[], int m)
{
int r[N] = {}, ri;
for(int i = 1; i <= a[0]; ++i)
{
int c = 0;
for(int j = 1; j <= b[0]; ++j)
{
r[i+j-1] += a[i]*b[j] + c;
c = r[i+j-1] / 10;
r[i+j-1] %= 10;
}
r[i+b[0]] += c;
}
ri = a[0] + b[0];
while(r[ri] == 0 && ri > 1)
ri--;
r[0] = ri;
if(r[0] > m)
r[0] = m;
numcpy(a, r);
}
void Multiply(int a[], int b)
{
int c = 0, i;
for(i = 1; i <= a[0]; ++i)
{
a[i] = a[i]*b + c;
c = a[i] / 10;
a[i] %= 10;
}
while(c > 0)
{
a[i] = c % 10;
c /= 10;
i++;
}
while(a[i] == 0 && i > 1)
i--;
a[0] = i;
}
void Divide(int a[], int b)
{
int x = 0, ai;
for(int i = a[0]; i >= 1; i--)
{
x = x * 10 + a[i];
a[i] = x / b;
x %= b;
}
ai = a[0];
while(a[ai] == 0 && ai > 1)
ai--;
a[0] = ai;
}
void fastPower(int a[], int b[], int m)
{
int r[N] = {1, 1}, c[N];
numcpy(c, b);
while(!(c[0] == 1 && c[1] == 0))
{
if(c[1] % 2 == 1)
Multiply(r, a, m);
Multiply(a, a, m);
Divide(c, 2);
}
numcpy(a, r);
}
void tonum(int a[], char s[])
{
int len = strlen(s);
for(int i = 1; i <= len; ++i)
a[i] = s[len-i] - '0';
a[0] = len;
}
void cutNum(int a[], int n, int b[])
{
for(int i = 1; i <= n; ++i)
b[i] = a[i];
b[0] = n;
}
int main()
{
int n[N] = {}, a[N] = {}, b[N] = {}, l[N] = {1,1}, k;
char s[N];
cin >> s >> k;
tonum(n, s);
for(int i = 1; i <= k; ++i)
{
cutNum(n, i, a);
fastPower(a, l, i);
cutNum(n, i, b);
bool isFound = false;
for(int j = 1; j <= 10; ++j)
{
Multiply(b, a, i);
if(b[i] == n[i])
{
Multiply(l, j);
isFound = true;
break;
}
}
if(isFound == false)
{
cout << -1;
return 0;
}
}
for(int i = l[0]; i >= 1; i--)
cout << l[i];
return 0;
}