fn main() { let buf = std::fs::read_to_string("three.txt").unwrap(); let mut sum = 0u32; for line in buf.split("\n") { let (first, last) = line.split_at(line.len() / 2); let mut seen_before = Vec::with_capacity(first.len()); for c in first.chars() { if last.contains(c) && !seen_before.contains(&c) { let priority = if c.is_ascii_uppercase() { (c as u8) - 65 + 27 } else { (c as u8) - 96 }; // dbg!(first, last, c, (c as u8), c.is_ascii_uppercase(), priority); sum += priority as u32; seen_before.push(c); } } } println!("{}", sum); }