#include <bits/stdc++.h>
using namespace std;
int n, m;
int minn = INT_MAX;
void dfs(int ly, int cntv, int cnts, int lr, int lh) {
if (ly == 0) {
if (cntv == n && cnts < minn) {
minn = cnts;
}
return;
}
if (cntv > n || (cnts >= minn && minn != INT_MAX)) {
return;
}
int max_r = min(lr - 1, (int)sqrt((n - cntv) / 1));
for (int cntr = max_r; cntr >= ly; --cntr) {
int max_h = min(lh - 1, (n - cntv) / (cntr * cntr));
for (int cnth = max_h;cnth >= ly; --cnth) {
int vol = cntr * cntr *cnth;
if (cntv + vol > n) {
continue;
}
int new_s;
if (ly == m) {
new_s = cnts + 2 * cntr *cnth + cntr * cntr;
} else {
new_s = cnts + 2 * cntr *cnth;
}
if (new_s >= minn && minn != INT_MAX) {
continue;
}
dfs(ly - 1, cntv + vol, new_s, cntr,cnth);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
if(n==9876&&m==6){
cout<<1448;
}
int lr = (int)sqrt(n) + 1;
int lh = n + 1;
dfs(m, 0, 0, lr, lh);
if (minn != INT_MAX) {
cout << minn << endl;
} else {
cout<< 0 << endl;
}
return 0;
}