#include #include using namespace std; long long kpow(long long x, long long n) { if (n == 0) return 1; long long t = 1; while (n) { if (n & 1) t *= x; n >>= 1; x *= x; } return t; } int main() { long long n; scanf("%lld", &n); if(n==1) { puts("1"); return 0; } long long ans = n + 1; long long i = n, j = 1, k = 0; long long lst = n + 1; while (1) { j++; i = pow(n*1.0, 1.0 / j); k = n - kpow(i, j); ans = min(ans, i + j + k); if (i == 1) { printf("%lld\n", ans); break; } } return 0; }