use std::fs; use std::char; fn main() { let lines = fs::read_to_string("input").expect("Unable to read file"); //Part 1 println!("{}", reduce(lines.clone())); //Part 2 let mut all_lengths: Vec = Vec::new(); for i in 0..26 { let big_char = char::from_u32(65+i).unwrap(); let little_char = char::from_u32(97+i).unwrap(); let string = lines.clone().replace(big_char, "").replace(little_char, ""); all_lengths.push(reduce(string)); } println!("{}", all_lengths.iter().min().unwrap()); } fn reduce(string: String) -> i32 { let all_chars: Vec = string.chars().into_iter().collect(); let mut stack: Vec = Vec::new(); for c in all_chars{ if !stack.is_empty(){ let sub = *stack.last().unwrap() as i32 - c as i32; if sub == 32 || sub == -32 { stack.pop(); } else{ stack.push(c.clone()); } } else { stack.push(c.clone()); } } return stack.len() as i32 }