fn main() { let s = std::io::read_to_string(std::io::stdin()).unwrap(); println!("{}", output(solve(s))); } fn solve(s: String) -> Option { let mut dp = [usize::MAX; 2]; s.bytes() .enumerate() .filter_map(|(i, s)| match s { b'c' => { dp[0] = i; None } b'w' => { if dp[1] != usize::MAX { let r = i - dp[1]; dp[1] = dp[0]; Some(r) } else { dp[1] = dp[0]; None } } _ => None, }) .min() } fn output(ans: Option) -> String { match ans { Some(ans) => (ans + 1).to_string(), None => String::from("-1"), } }