#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace atcoder; using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define rep1(i, n) for (int i = 1; i <= (int)(n); ++i) #define repr(i, n) for (int i = (int)(n) - 1; i >= 0; --i) #define rep3(i, l, r) for (int i = (int)(l); i < (int)(r); ++i) #define repr3(i, l, r) for (int i = (int)(r) - 1; i >= (int)(l); --i) using ll = long long; using ull = unsigned long long; using P = pair; using Pll = pair; using vi = vector; using vvi = vector>; using vvvi = vector>>; using vP = vector

; using vPll = vector; using vvP = vector>; using vll = vector; using vvll = vector>; using vs = vector; using vvs = vector; using vb = vector; using vvb = vector; #define all(x) (x).begin(), (x).end() #define fi first #define se second template void chmax(T& a, const T& b) { if (a < b) a = b; } template void chmin(T& a, const T& b) { if (a > b) a = b; } string A; vvll d; int N, M; vs S; int main() { cin >> A; int L = A.size(); d.assign(L, vll(L)); rep(i, L) rep(j, L) cin >> d[i][j]; cin >> N >> M; S.assign(N, string()); rep(i, N) cin >> S[i]; unordered_map c2i; rep(i, L) c2i[A[i]] = i; vvll cnt(M, vll(L)); rep(i, N) rep(j, M) { int l = c2i[S[i][j]]; cnt[j][l]++; } vvll sumFromU(M, vll(L)); rep(j, M) { rep(u, L) rep(v, L) sumFromU[j][u] += d[u][v] * cnt[j][v]; } vll ans(N); rep(i, N) rep(j, M) { int u = c2i[S[i][j]]; ans[i] += sumFromU[j][u]; } rep(i, N) cout << ans[i] << endl; return 0; }