from functools import lru_cache def make_divisors(n): lower, upper = [], [] i = 1 while i * i <= n: if n % i == 0: lower.append(i) if i != n // i: upper.append(n // i) i += 1 return lower + upper[::-1] @lru_cache(100000) def solve(number): if number == 1: return 0 divisors = make_divisors(number) res = 1001001001001 for div in divisors: if div == number: continue res = min(res, number//div + solve(div)) return res print(solve(int(input())))