RT
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll int
ll n,m,s1[31],s2[31],ans=11451,sum;
void dfs(ll v,ll s,ll t,ll r,ll h)
{
sum=0;
if(t==0)
{
if(v==n&&s<ans)
ans=s;
return ;
}
if(v+s2[t-1]>n) return ;
//if(s+s1[t-1]>ans) return ;
if(2*(n-v)/r+s>=ans) return ;
for(ll i=r-1;i>=t;i--)
{
if(t==m) s=i*i;
sum=min(n-v-s2[t-1]/(i*i),h-1);
for(ll j=sum;j>=t;j--)
{
dfs(v+i*i*j,s+2*i*j,t-1,i,j);
}
}
}
int main()
{
cin>>n>>m;
s1[0]=s2[0]=0;
for(ll i=1;i<=20;i++)
{
//s1[i]=s1[i-1]+2*i*i;
s2[i]=s2[i-1]+i*i*i;
}
dfs(0,0,m,n+1,n+1);
if(ans==11451)
{
cout<<0;
}
else
{
cout<<ans;
}
return 0;
}