input = gets

N = input.split(" ")[0].to_i

rt_n = Math.sqrt(N).to_i
ans = []

# 対象性により、a >= bとできるので、a*aの二次元配列を探索すれば良い
# 上記の平方根をとって、a <= sqrt(N)の範囲で、N = a * bとなるbを求める
1.upto(rt_n) do |a|
  if N%a == 0
    b = N / a
    
    # 移動回数(ido)は、a + b -2で求まる
    ido = a + b -2
    ans.push(ido)
  else
    next
  end
end

# 移動回数が最小の値を返す
p ans.min