#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e6 + 10;
int a[N], b[N], c[N];
void zh(string s, int t[]) {
reverse(s.begin(), s.end());
for(int i = 0; i < s.size(); i++) {
t[i] = s[i] - '0';
}
}
string gjc(string s1, string s2) {
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
zh(s1, a);
zh(s2, b);
int la = s1.size();
int lb = s2.size();
int lc = la + lb - 1;
for(int i = 0; i < la; i++) {
for(int j = 0; j < lb; j++) {
c[i + j] += a[i] * b[j];
}
}
int jw = 0;
for(int i = 0; i < lc; i++) {
c[i] += jw;
jw = c[i] / 10;
c[i] %= 10;
}
while(jw != 0) {
lc++;
c[lc - 1] = jw % 10;
jw /= 10;
}
while(lc > 1 && c[lc - 1] == 0) {
lc--;
}
string s = "";
for(int i = lc - 1; i >= 0; i--) {
s += char(c[i] + '0');
}
return s;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string s1;
int s2;
cin >> s1 >> s2;
string jg = "1";
for(int i = 1; i <= s2; i++) {
jg = gjc(jg, s1);
if(jg.size() > 10) {
cout << -1;
return 0;
}
}
cout << jg;
return 0;
}