#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;
long long n;
long long m;
long long res = 1e9;
void dfs (long long now, long long v, long long s, long long lastr, long long lasth) {
if (s > res) {
return;
}
if (now == m) {
if (v == 0) {
res = min (res, s);
}
return;
}
if (v == 0) {
return;
}
long long minv = 0;
for (int i = 1; i <= m - now; i++) {
minv += i * i * i;
}
if (minv > v) {
return;
}
long long maxv = 0;
for (long long i = 1; i <= m - now; i++) {
maxv += (lastr - i) * (lastr - i) * (lasth - i);
}
if (maxv < v) {
return;
}
for (long long r = m - now; r < lastr; r++) {
for (long long h = m - now; h < lasth; h++) {
if (r * r * h > v) {
if (h == 1) {
return;
}
break;
}
dfs (now + 1, v - r * r * h, s + 2 * r * h, r, h);
}
}
}
int main () {
freopen ("cake.in", "r", stdin);
freopen ("cake.out", "w", stdout);
cin >> n >> m;
for (long long r = m; r * r <= n; r++) {
for (long long h = m; h * r * r <= n; h++) {
dfs (1, n - h * r * r, r * r + 2 * r * h, r, h);
}
}
if (res == 1e9) {
res = 0;
}
cout << res << endl;
return 0;
}