#include <iostream>
#include <algorithm>
using namespace std;
const int INF = 10e9;
int dp[100001];
int main() {
int N;
int prevNum = 0;
cin >> N;
dp[0] = INF;
for (int i = 1; i <= N; i++) {
dp[i] = INF;
if (i == (prevNum + 1) * (prevNum + 1)) {
dp[i] = 1;
prevNum++;
}
for (int tempPrevNum = prevNum; tempPrevNum > 0; tempPrevNum--) {
dp[i] = min(dp[i], min(dp[i - 1] + 1, dp[i - tempPrevNum * tempPrevNum] + 1));
}
}
cout << dp[N];
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAxMGU5OwoKaW50IGRwWzEwMDAwMV07CmludCBtYWluKCkgewoJaW50IE47CglpbnQgcHJldk51bSA9IDA7CgljaW4gPj4gTjsKCglkcFswXSA9IElORjsKCWZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewoJCWRwW2ldID0gSU5GOwoKCQlpZiAoaSA9PSAocHJldk51bSArIDEpICogKHByZXZOdW0gKyAxKSkgewoJCQlkcFtpXSA9IDE7CgkJCXByZXZOdW0rKzsKCQl9CgoJCWZvciAoaW50IHRlbXBQcmV2TnVtID0gcHJldk51bTsgdGVtcFByZXZOdW0gPiAwOyB0ZW1wUHJldk51bS0tKSB7CgkJCWRwW2ldID0gbWluKGRwW2ldLCBtaW4oZHBbaSAtIDFdICsgMSwgZHBbaSAtIHRlbXBQcmV2TnVtICogdGVtcFByZXZOdW1dICsgMSkpOwoJCX0KCX0KCgljb3V0IDw8IGRwW05dOwp9