#include <bits/stdc++.h>
using namespace std;
template <typename T>inline void R(T& t){
t=0; register char ch=getchar();
while(!('0'<=ch&&ch<='9')){ if(ch=='-') t*=-1; ch=getchar(); }
while(('0'<=ch&&ch<='9')){ t=((t<<1)+(t<<3))+ch-'0'; ch=getchar(); }
}
template <typename T,typename... Args> inline void R(T& t, Args&... args){R(t);R(args...);}
template <typename T>inline void W(T x){
if(x<0) putchar('-'),x=~(x-1); int s[30],top=0; while(x) s[++top]=x%10,x/=10;
if(!top) s[++top]=0; while(top) putchar(s[top--]+'0');
}
int n,m,ans=0x3f3f3f3f,mins[16],minv[16];
void dfs(int dep,int lastr,int lasth,int s,int v){
if(dep==0){
if(v==0) ans=min(ans,s);
return;
}
if(s+mins[dep]>ans) return; //最优性剪枝
if(v<minv[dep]) return;
if(s+2*(n-v)/lastr>ans) return; //加上这一句话 WA20pts,去掉 TLE70pts 我看我好像跟题解里的这句话一样,,,
for(int r=lastr-1;r>=dep;--r){
if(dep==m) s=r*r;
for(int h=min(lasth-1,(v-minv[dep-1])/(r*r));h>=dep;--h)
dfs(dep-1,r,h,s+2*r*h,v-r*r*h);
}
}
int main()
{
R(n,m);
for(int i=1;i<=m;++i)
mins[i]=mins[i-1]+i*i*2,
minv[i]=minv[i-1]+i*i*i;
dfs(m,sqrt(n),sqrt(n),0,n);
cout<<((ans==0x3f3f3f3f)?0:ans)<<endl;
return 0;
}
白名蒟蒻求救,已占一页评测。。。