#include #include using namespace atcoder; using namespace std; using mint = modint1000000007; #define rep1(a) for (int i = 0; i < (a); i++) #define rep2(i, a) for (int i = 0; i < (a); i++) #define rep3(i, a, b) for (int i = a; i < (b); i++) #define rep4(i, a, b, c) for (int i = a; i < (b); i += c) #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) using ll = long long; constexpr ll INF = (1LL << 60); void chmax(ll& a, ll b) { a = max(a, b);} void chmin(ll& a, ll b) { a = min(a, b); } inline void YesNo(bool ok) { cout << (ok ? "Yes\n" : "No\n"); } template void input_vec(vector& v) { for (auto& x : v) cin >> x; } template void input(T&... a) { (cin >> ... >> a); } void print() { cout << '\n'; } template void print(const T& a, const Ts&... b) { cout << a; (cout << ... << (cout << ' ', b)); cout << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string A; cin >> A; map AMap; int A_size = A.size(); rep(i, A_size) { AMap[A[i]] = i; } vector> d(A_size, vector(A_size)); rep(i, A_size)rep(j, A_size) cin >> d[i][j]; int N, M; cin >> N >> M; vector S(N); rep(i, N) cin >> S[i]; vector> cnt(M, vector(A_size)); rep(i, N) { rep(j, M) { cnt[j][AMap[S[i][j]]]++; } } rep(i, N) { ll ans = 0; rep(j, M) { int idx = AMap[S[i][j]]; rep(k, A_size) { ans += cnt[j][k] * d[idx][k]; } } cout << ans << endl; } return 0; }