use std::cmp::*; use std::collections::*; use std::io::*; use std::str::FromStr; fn read() -> T { let stdin = stdin(); let stdin = stdin.lock(); let token: String = stdin .bytes() .map(|c| c.expect("failed to read char") as char) .skip_while(|c| c.is_whitespace()) .take_while(|c| !c.is_whitespace()) .collect(); token.parse().ok().expect("failed to parse token") } fn main(){ let n:usize = read(); let mut now = 1; let mut cnt = 0; while now <= n{ now *= 2; cnt += 1; } let a = ((now / 2,cnt - 1),(now,cnt)); if (a.0).0 < n{ println!("{}",(a.1).1+ (a.1).0 - n); }else if (a.0).0 == n{ println!("{}",(a.0).1); }else{ println!("{}",(a.0).1 + (a.0).0 - n); } }