// #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
// 完全背包
// 思路是看题解才想到的,本来差点用成贪心了,但是发现不行,还没有反应过来是用完全背包
#include <algorithm>
#include <array>
#include <bitset>
#include <cctype>
#include <chrono>
#include <climits>
#include <cmath>
//#include <conio.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <thread>
#include <tuple>
#include <unordered_set>
#include <vector>
//#include <windows.h>
using namespace std;
//-----------------------------
int n, ans = 0;
int mmax;
int a[static_cast<int>(1e4 + 10)];
void solve() {
memset(a, 127, sizeof(a));//---------记得初始化为一个很大的值
cin >> n;
mmax = sqrt(n) + 1;
a[0] = 1;
for (int i = 0; i <= mmax; i++) {
for (int j = 0; j <= n; j++) {//---------完全背包是正序的
if (j < i * i) continue;//----------记得跳过不够的防止越界
a[j] = min(a[j - i * i] + 1, a[j]);
}
}
cout << a[n] - 1 << endl;
}
/*-----------C-O-D-E----------*/
int main()
{
int T = 1;
//IOS;// cin >> T;
//read(T);
//----------------
//----------------
while (T--) {
solve();
}
return 0;
}
/*
┏┓ ┏┓+ +
┏┛┻━━━┛┻┓ + +
┃ ┃
┃ ━ ┃ ++ + + +
████━████ ┃+
┃ ┃ +
┃ ┻ ┃
┃ ┃ + +
┗━┓ ┏━┛
┃ ┃
┃ ┃ + + + +
┃ ┃ Codes are far away from bugs with the animal protecting
┃ ┃ + 神兽保佑,代码大概率无bug(不过神兽偶尔也会休息哦~)
┃ ┃ Blessed by the mythical beast, may bugs stay far away
┃ ┃ +
┃ ┗━━━┓ + +
┃ ┣┓
┃ ┏┛
┗┓┓┏━┳┓┏┛ + + + +
┃┫┫ ┃┫┫
┗┻┛ ┗┻┛+ + +++
*/