#include <bits/stdc++.h>
using namespace std;
char s[3010][3010];
int p[3010][3010], f[3010][3010], c[10], wd[3010];
int n, m, A[3010][3010], lw[3010], up[3010], B[3010][3010], ans, nw[3010],
    rk[3010], hd[3010], al;
inline void Init() {
  scanf("%s%d", s[0], &n);
  m = strlen(s[0]);
  for (int i = 1; i <= n; i++) {
    scanf("%s", s[i]);
    m = max(m, (int)strlen(s[i]));
  }
  m++;
  int len = strlen(s[0]);
  for (int i = len - 1; i >= 0; i--) {
    if (s[0][i] == '?') {
      lw[m - (len - i) + 1] = (i == 0);
      up[m - (len - i) + 1] = 9;
    } else
      lw[m - (len - i) + 1] = up[m - (len - i) + 1] = s[0][i] - '0';
  }
  al = m - len + 1;
  for (int i = 1; i <= n; i++) {
    len = strlen(s[i]);
    for (int j = len - 1; j >= 0; j--) B[i][m - (len - j) + 1] = s[i][j] - '0';
    hd[i] = m - len + 1;
  }
  for (int i = 0; i <= 9; i++) scanf("%d", &c[i]);
}
int main() {
  Init();
  memset(f, -1, sizeof(f));
  for (int i = 1; i <= n; i++) p[m + 1][i] = i;
  f[m + 1][0] = 0;
  for (int i = m; i >= 1; i--) {
    int tot = 0;
    for (int j = 0; j <= 9; j++) wd[j] = 0;
    for (int j = 1; j <= n; j++) wd[B[j][i]]++, tot++;
    for (int j = 8; j >= 0; j--) wd[j] += wd[j + 1];
    for (int j = n; j >= 1; j--) p[i][wd[B[p[i + 1][j]][i]]--] = p[i + 1][j];
    for (int j = 1; j <= n; j++) rk[p[i][j]] = j;
    for (int k = lw[i]; k <= up[i]; k++) {
      int nm = 0, pos = 0;
      memset(nw, 0, sizeof(nw));
      for (int j = 1; j <= n; j++) {
        nw[p[i][j]] = B[p[i][j]][i] + k;
        if (hd[p[i][j]] <= i || al <= i) {
          if (nw[p[i][j]] >= 10) pos = j, nw[p[i][j]] %= 10;
          nm += c[nw[p[i][j]]];
        }
      }
      if (f[i + 1][0] != -1) f[i][pos] = max(f[i][pos], nm + f[i + 1][0]);
      for (int j = 1; j <= n; j++) {
        int ad = p[i + 1][j];
        if (hd[ad] <= i || al <= i) nm -= c[nw[ad]];
        nw[ad]++;
        if (nw[ad] >= 10) pos = rk[ad], nw[ad] %= 10;
        nm += c[nw[ad]];
        if (f[i + 1][j] != -1) f[i][pos] = max(f[i][pos], nm + f[i + 1][j]);
      }
    }
  }
  for (int i = 0; i <= n; i++) ans = max(ans, f[1][i]);
  printf("%d\n", ans);
}
