use std::cmp::min; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: u128 = n.trim().parse().unwrap(); let mut max_val = 0u128; while 2u128.pow(max_val as u32) < n { max_val += 1; } let limit = 2 * max_val; let mut result: usize = 2 * max_val as usize; for j in 3..=limit { for i in 0.. { if (j as u128).pow(i as u32) > n { result = min(result, j as usize * i as usize); break; } } } println!("{}", result); }