/* -*- coding: utf-8 -*- * * 3435.cc: No.3435 [Cherry 8th Tune *] 菴募屓 LOVE SONG 繧呈嶌縺肴鋤縺医◆縺繧阪≧縺・ - yukicoder */ #include #include #include using namespace std; /* constant */ const int MAX_N = 3000; const int MAX_M = 3000; /* typedef */ using ll = long long; using vec = int[26]; /* global variables */ char a[26 + 4]; int cmap[128], ds[26][26]; char ss[MAX_N][MAX_M + 4]; vec vs[MAX_N]; /* subroutines */ /* main */ int main() { scanf("%s", a); int k = strlen(a); fill(cmap, cmap + 128, -1); for (int i = 0; i < k; i++) cmap[a[i]] = i; for (int i = 0; i < k; i++) for (int j = 0; j < k; j++) scanf("%d", ds[i] + j); int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%s", ss[i]); for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) vs[j][cmap[ss[i][j]]]++; for (int i = 0; i < n; i++) { ll sum = 0; for (int j = 0; j < m; j++) { int sij = cmap[ss[i][j]]; for (int l = 0; l < k; l++) sum += (ll)ds[sij][l] * vs[j][l]; } printf("%lld\n", sum); } return 0; }