#include using namespace std; using ll = long long; int main() { // 入力 string A; cin >> A; int L = A.size(); unordered_map A_inv; for (int i = 0; i < A.size(); i++) { A_inv[A[i]] = i; } vector> d(L, vector(L, 0)); for (int i = 0; i < L; i++) { for (int j = 0; j < L; j++) { cin >> d[i][j]; } } int N, M; cin >> N >> M; vector> S_code(N, vector(M, 0)); for (int i = 0; i < N; i++) { string S; cin >> S; for (int j = 0; j < M; j++) { S_code[i][j] = A_inv[S[j]]; } } // 前計算 vector> F(M, vector(L, 0)); vector> G(M, vector(L, 0)); for (int k = 0; k < M; k++) { for (int i = 0; i < N; i++) { F[k][S_code[i][k]]++; } for (int alpha = 0; alpha < L; alpha++) { for (int gamma = 0; gamma < L; gamma++) { G[k][alpha] += d[alpha][gamma] * F[k][gamma]; } } } // 本計算 for (int i = 0; i < N; i++) { ll h = 0; for (int k = 0; k < M; k++) { h += G[k][S_code[i][k]]; } cout << h << endl; } }