#include <cstdio>
using namespace std;
int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return f*x;
}
int n,m,ans=2147483647;
inline int min(int x,int y)
{
if(x<y) return x;
else return y;
}
void dfs(int V,int S,int i,int j,int dep)
{
if(dep==m)
{
if(V==n) ans=min(ans,S);
return;
}
if(((i-1)*(i-1)*(j-1))*(m-dep)<n-V) return;
if(ans<=(n-V)*2/(i-1)+S) return;
for(int r=m-dep;r<i&&r*r*(m-dep)<=n-V;r++)
for(int h=m-dep;h<j&&r*r*h<=n-V;h++)
dfs(V+r*r*h,S+2*r*h,r,h,dep+1);
}
int main()
{
n=read(); m=read();
for(int r=m;r*r*m<=n;r++)
for(int h=m;h*m*m<=n;h++)
dfs(r*r*h,r*r+2*r*h,r,h,1);
if(ans==2147483647) ans=0;
printf("%d",ans);
return 0;
}