#include<bits/stdc++.h>
using namespace std;
#define file(filename) freopen(filename".in","r",stdin),freopen(filename".out","w",stdout)
#define endl "\n"
#define INF 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,num) memset(a,num,sizeof(a))
#define sort_(a) sort(a+1,a+n+1)
#define sort_cmp(a) sort(a+1,a+n+1,cmp)
#define keep(n) fixed<<setprecision(n)
#define LF putchar('\n')
#define SP putchar(' ')
#define eps 1e-8
#define debug(x) cout<<#x<<'='<<x<<endl;
#define PI acos(-1.0)
#define randint(l,r) rand()%((r)-(l)+1)+(l)
template <typename T>void read(T& x) {x = 0; char ch = getchar();ll f = 1;while (!isdigit(ch)) {if (ch == '-')f *= -1;ch = getchar();} while (isdigit(ch)) {x = x * 10 + ch - 48;ch = getchar();}x *= f;}template <typename T, typename... Args>void read(T& first, Args&... args) {read(first);read(args...);}template <typename T>void write(T arg) {T x = arg;if (x < 0) {putchar('-');x = -x;}if (x > 9) { write(x / 10);} putchar(x % 10 + '0');}template <typename T, typename... Ts>void write(T arg, Ts... args) {write(arg); if (sizeof...(args) != 0) { putchar(' ');write(args...);}}
int n,m,ans=1e9;
bool check(int l,int v,int r,int h){
int vmin=0,vmax=0;
for(int i=1;i<=l;i++,r--,h--){
vmin+=i*i*i;
vmax+=r*r*h;
}return v>=vmin&&v<=vmax;
}
void dfs(int i,int v,int r,int h,int s){
if(!i) {
if(!v) ans=min(ans,s);
return;
}if(!check(i,v,r,h)||s+2*v/(int)sqrt(v)>=ans) return;
for(int _r=min((int)sqrt(v),r);_r>=i;_r--){
for(int _h=min(v/_r/_r,h);_h>=i;_h--) dfs(i-1,v-_r*_r*_h,_r-1,_h-1,s+2*_r*_h+(i==m)*_r*_r);
}
}
int main() {
read(n,m);
dfs(m,n,sqrt(n),n,0);
write((ans==1e9?0:ans));
return 0;
}