# include <bits/stdc++.h>
# define ffor(i,name) \
for (auto i = name.begin (); i != name.end (); ++ i)
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
const int inf = 1e9;
int n, m, minx = inf, minv[20], mins[20];
inline void dfs (int step, int n, int now, int lstr, int lsth) {
if (n < minv[step] || now + mins[step] >= minx)
return ;
if (! step) {
if (! n)
minx = now;
return ;
}
for (int r = min (lstr, (int) sqrt (n)); r >= step && r * r <= n; -- r)
for (int h = min (lsth, n / r / r); h >= step && h * r * r <= n; -- h)
dfs (step - 1, n - r * r * h, now + r * 2 * h + (step >= m) * r * r, r - 1, h - 1);
return ;
}
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> m;
for (int i = 1; i <= m; ++ i)
minv[i] = minv[i - 1] + i * i * i, mins[i] = mins[i - 1] + i * 2 * i;
dfs (m, n, 0, inf, inf);
cout << (minx < inf ? minx : 0);
return 0;
}