/*
cf : F112
/) /) ~ ┏━━━━━━━━━━━━━━━━━┓
( •-• ) ~ ♡ You are amazing ♡
/ づづ ~ ┗━━━━━━━━━━━━━━━━━┛
*/
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define int long long
#define Ali ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
const int N = 2e5 + 7;
const int MOD = 998244353;
const int P = 233;
const int inf = 1e18 + 7;
int gcd(int x, int y){
while(y){
x %= y;
swap(x, y);
}
return x;
}
int binpow(int n, int k){
if (k == 0) return 1;
if (k % 2 == 0){
int val = binpow(n, k / 2);
return (val * val) % MOD;
}
return (n * binpow(n, k - 1)) % MOD;
}
vector <int> t(N * 4), a(N, 1);
void build(int v, int l, int r){
if (l == r){
t[v] = a[l];
return;
}
int mid = (r + l) / 2;
build(v * 2, l, mid);
build(v * 2 + 1, mid + 1, r);
t[v] = t[v * 2] + t[v * 2 + 1];
}
void upd(int v, int l, int r, int x, int pos){
if (l == r){
t[v] = x;
return;
}
int mid = (r + l) / 2;
if (mid < pos) upd(v * 2 + 1, mid + 1, r, x, pos);
else upd(v * 2, l, mid, x, pos);
t[v] = t[v * 2] + t[v * 2 + 1];
}
int get(int v, int l, int r, int tl, int tr){
if (l > tr || r < tl) return 0;
if (tl <= l && r <= tr) return t[v];
int mid = (l + r) / 2;
return (get(v * 2, l, mid, tl, tr) + get(v * 2 + 1, mid + 1, r, tl, tr));
}
void abb() {
int n;
cin >> n;
int x = sqrt(n);
int ans = x * 2 - 1;
if (x * (x + 1) <= n) ans++;
cout << ans << "\n";
}
signed main(){
Ali;
int T = 1;
// cin >> T;
while(T--){
abb();
}
}