#include <bits/stdc++.h>
using namespace std;
int main() {
long long n, m;
cin >> n >> m;
if(m == 0) { cout << 0 << endl; return 0; }
if(n == 1) { cout << m << endl; return 0; }
long long left = 1, right = m, root = -1;
while(left <= right) {
long long mid = (left + right) / 2;
long long val = 1;
bool value = false;
for(long long i = 0; i < n; i++) {
if(val > m / mid) {
value = true;
break;
}
val *= mid;
}
if(value == false && val == m) {
root = mid;
break;
}
else if(value == false && val < m) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
cout << root << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGxvbmcgbG9uZyBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKCiAgICBpZihtID09IDApIHsgY291dCA8PCAwIDw8IGVuZGw7IHJldHVybiAwOyB9CiAgICBpZihuID09IDEpIHsgY291dCA8PCBtIDw8IGVuZGw7IHJldHVybiAwOyB9CgogICAgbG9uZyBsb25nIGxlZnQgPSAxLCByaWdodCA9IG0sIHJvb3QgPSAtMTsKCiAgICB3aGlsZShsZWZ0IDw9IHJpZ2h0KSB7CiAgICAgICAgbG9uZyBsb25nIG1pZCA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKICAgICAgICBsb25nIGxvbmcgdmFsID0gMTsKICAgICAgICBib29sIHZhbHVlID0gZmFsc2U7CgogICAgICAgIGZvcihsb25nIGxvbmcgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYodmFsID4gbSAvIG1pZCkgewogICAgICAgICAgICAgICAgdmFsdWUgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFsICo9IG1pZDsKICAgICAgICB9CgogICAgICAgIGlmKHZhbHVlID09IGZhbHNlICYmIHZhbCA9PSBtKSB7CiAgICAgICAgICAgIHJvb3QgPSBtaWQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gCiAgICAgICAgZWxzZSBpZih2YWx1ZSA9PSBmYWxzZSAmJiB2YWwgPCBtKSB7CiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgIH0gCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJpZ2h0ID0gbWlkIC0gMTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCByb290IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=