#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
inline void Max(T &a, U b) {
  if (a < b) a = b;
}
template <class T, class U>
inline void Min(T &a, U b) {
  if (a > b) a = b;
}
int pow(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = ans * (long long)a % 1000000007;
    a = (long long)a * a % 1000000007;
    b >>= 1;
  }
  return ans;
}
char s[210];
int v[210], f[210], to[210][26], sz, d[210];
void add(char s[], int k) {
  int n = strlen(s), p = 0, j;
  for (int i = 0; i < n; i++) {
    j = s[i] - 'a';
    if (!to[p][j]) {
      to[p][j] = ++sz;
    }
    p = to[p][j];
  }
  v[p] += d[k];
}
void build() {
  queue<int> q;
  for (int i = 0; i < 26; i++) {
    if (to[0][i]) {
      q.push(to[0][i]);
    }
  }
  while (!q.empty()) {
    int u = q.front(), j;
    q.pop();
    v[u] += v[f[u]];
    for (int i = 0; i < 26; i++) {
      if (j = to[u][i]) {
        f[j] = to[f[u]][i];
        q.push(j);
      } else
        to[u][i] = to[f[u]][i];
    }
  }
}
long long a[210][210], b[210][210];
void mul(long long a[210][210], long long b[210][210]) {
  static long long c[210][210];
  for (int i = 0; i < sz; i++)
    for (int j = 0; j < sz; j++) {
      c[i][j] = -1e18;
      ;
      for (int k = 0; k < sz; k++) {
        Max(c[i][j], a[i][k] + b[k][j]);
      }
    }
  for (int i = 0; i < sz; i++)
    for (int j = 0; j < sz; j++) a[i][j] = c[i][j];
}
int main() {
  int T = 30, j, k, i, ca = 0, n, m;
  long long L;
  scanf("%d%I64d", &n, &L);
  for (int i = 0; i < n; i++) scanf("%d", &d[i]);
  sz = 0;
  for (int i = 0; i < n; i++) scanf("%s", s), add(s, i);
  build();
  sz++;
  for (int i = 0; i < sz; i++)
    for (int j = 0; j < sz; j++) a[i][j] = b[i][j] = -1e18;
  for (int i = 0; i < sz; i++)
    for (int j = 0; j < 26; j++)
      if (k = to[i][j]) {
        a[i][k] = v[k];
      }
  b[0][0] = 0;
  while (L) {
    if (L & 1) mul(b, a);
    mul(a, a);
    L >>= 1;
  }
  long long ans = -1e18;
  for (int i = 0; i < sz; i++) Max(ans, b[0][i]);
  printf("%I64d\n", ans);
  return 0;
}
