#include <iostream>
#include <cmath>
using namespace std;
int getAllWays(int b, int li, int rem)
{
if (rem==0)
{
return 1;
}
if (li<=0)
{
return 0;
}
int remrt = pow(rem,(1.0/b));
while(remrt>=li)
{
remrt--;
}
// Select case
int v1 = getAllWays(b, remrt, rem-pow(remrt,b));
// Reject case
int v2 = getAllWays(b, remrt, rem);
return v1+v2;
}
int getAllWays(int a, int b)
{
// Write your code here
int li = pow(a,(1.0/b));
li++;
return getAllWays(b, li, a);
}
int main()
{
int a, b;
cin >> a >> b;
cout <<getAllWays(a, b);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZ2V0QWxsV2F5cyhpbnQgYiwgaW50IGxpLCBpbnQgcmVtKQp7CiAgICBpZiAocmVtPT0wKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgaWYgKGxpPD0wKQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgaW50IHJlbXJ0ID0gcG93KHJlbSwoMS4wL2IpKTsKICAgIHdoaWxlKHJlbXJ0Pj1saSkKICAgIHsKICAgICAgICByZW1ydC0tOwogICAgfQogICAgLy8gU2VsZWN0IGNhc2UKICAgIGludCB2MSA9IGdldEFsbFdheXMoYiwgcmVtcnQsIHJlbS1wb3cocmVtcnQsYikpOwogICAgLy8gUmVqZWN0IGNhc2UKICAgIGludCB2MiA9IGdldEFsbFdheXMoYiwgcmVtcnQsIHJlbSk7CiAgICByZXR1cm4gdjErdjI7Cn0KCmludCBnZXRBbGxXYXlzKGludCBhLCBpbnQgYikKewoJLy8gV3JpdGUgeW91ciBjb2RlIGhlcmUKICAgIGludCBsaSA9IHBvdyhhLCgxLjAvYikpOwogICAgbGkrKzsKICAgIHJldHVybiBnZXRBbGxXYXlzKGIsIGxpLCBhKTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgYSwgYjsKICAgIGNpbiA+PiBhID4+IGI7CiAgICBjb3V0IDw8Z2V0QWxsV2F5cyhhLCBiKTsKfQ==