#include<bits/stdc++.h>
using namespace std;
int n,m,ans=INT_MAX;
int sum1[25];
int sum2[25];
void dfs(int layer,int r,int h,int s,int v)
{
int i,j;
if(s+sum2[m-layer+1]>=ans)
return;
if(sum1[m-layer+1]>v)
return;
if(s+2*v/r>=ans)
return;
if(layer>m)
{
if(v==0)
ans=min(s,ans);
return;
}
for(i=m-layer+1;i<h;++i)
{
for(j=m-layer+1;j<r;++j)
{
if(layer==1)
dfs(layer+1,j,i,s+j*j+2*j*i,v-j*j*i);
else
dfs(layer+1,j,i,s+2*j*i,v-j*j*i);
}
}
}
int main()
{
int i;
scanf("%d %d",&n,&m);
for(i=1;i<=m;++i)
{
sum1[i]+=sum1[i-1]+i*i*i;
sum2[i]+=sum2[i-1]+2*i*i;
}
dfs(1,sqrt((n-sum1[m-1])*1.0/m)+1,(n-sum1[m-1])*1.0/m/m+1,0,n);
printf("%d",ans);
return 0;
}