1impl Solution {2pub fn word_subsets(a: Vec<String>, b: Vec<String>) -> Vec<String> {3let count = |s: &str| {4let mut m = [0; 26];5s.chars().for_each(|c| m[c as usize - 'a' as usize] += 1);6m7};8let b_counts = b.iter().map(|s| count(s)).fold([0; 26], |mut bm, m| {9m.iter()10.enumerate()11.for_each(|(i, &n)| bm[i] = bm[i].max(n));12bm13});1415a.into_iter()16.map(|w| (count(&w), w))17.filter(|(m, _)| b_counts.iter().enumerate().all(|(i, &n)| m[i] >= n))18.map(|(_, w)| w)19.collect()20}21}