use proconio::{input, marker::Bytes}; fn main() { input! { a: Bytes, } let k = a.len(); let mut pos = [!0; 26]; for (i, &a) in a.iter().enumerate() { let a = (a - b'a') as usize; pos[a] = i; } input! { d: [[usize; k]; k], n: usize, m: usize, mut s: [Bytes; n], } let mut count = vec![vec![0; k]; m]; for s in &mut s { for (i, s) in s.iter_mut().enumerate() { *s -= b'a'; count[i][pos[*s as usize]] += 1; } } for s in &s { let mut ans = 0; for (i, &s) in s.iter().enumerate() { for j in 0..k { ans += count[i][j] * d[pos[s as usize]][j]; } } println!("{ans}"); } }