#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); 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/j); k=n-kpow(i,j); ans=min(ans,i+j+k); if(ans==lst) { printf("%lld",ans); break; } lst=ans; } return 0; }