mod p1468 { use std::collections::BTreeMap; fn gather(v: Vec) -> BTreeMap { v.into_iter().fold(BTreeMap::new(), |mut acc, s| { let count = acc.get(&s).unwrap_or(&0); acc.insert(s, count + 1); acc }) } pub fn solve(begin: Vec, after: Vec) -> String { let begin_map = gather(begin); let after_map = gather(after); for (k, v) in begin_map.into_iter() { if let Some(taken) = after_map.get(&k) { if taken != &v { return k } } else { return k } } return "--".to_string() } } struct Input { num: usize, begin: Vec, after: Vec, } impl Input { fn readline(len: usize) -> Vec { use std::io::{self, BufRead}; let stdin = io::stdin(); let lines = stdin.lock().lines().map(|l| l.unwrap().to_string()); lines.take(len).collect() } fn accept(len: usize) -> Self { let lines = Self::readline(len); let num = lines[0].parse::().unwrap(); let begin = lines[1].split(" ").map(|s| s.to_string()).collect::>(); let after = lines[2].split(" ").map(|s| s.to_string()).collect::>(); Self { num, begin, after, } } } fn main() { let args = Input::accept(3); let result = p1468::solve(args.begin, args.after); println!("{}", result); }