#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var a = I(); var d = new long[26, 26]; for (var i = 0; i < a.Length; i++) { var x = a[i] - 'a'; for (var j = 0; j < a.Length; j++) { var y = a[j] - 'a'; d[x, y] = I(); } } var n = I(); var m = I(); var sz = Range(n, I); var ans = new long[n]; for (var ci = 0; ci < m; ci++) { var cz = new int[26]; foreach (var s in sz) cz[s[ci] - 'a']++; var z = new long[26]; for (var i = 0; i < 26; i++) { var ki = cz[i]; if (ki == 0) continue; for (var j = 0; j < 26; j++) { var kj = cz[j]; if (kj == 0) continue; z[i] += d[i, j] * kj; } } for (var i = 0; i < n; i++) { var c = sz[i][ci] - 'a'; ans[i] += z[c]; } } Console.WriteLine(string.Join(Environment.NewLine, ans));