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