#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
int n, m, x[N], ne[N], cnt;
char p[N];
long long qmi(long long a, long long b, long long m) {
  a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}
int main() {
  cin >> n >> m >> p + 1;
  for (int i = 1; i <= m; i++) cin >> x[i];
  int len = strlen(p + 1);
  for (int i = 2; i <= len; i++) {
    int j = ne[i - 1];
    while (p[j + 1] != p[i] && j) j = ne[j];
    if (p[j + 1] == p[i]) ++j;
    ne[i] = j;
  }
  sort(x + 1, x + m + 1);
  for (int i = 1; i <= m; i++) {
    if (i == 1 || x[i] - x[i - 1] >= len) {
      cnt += len;
    } else {
      bool flag = false;
      int j = ne[len], l = x[i - 1] + len - x[i];
      while (j) {
        if (j == l) {
          flag = true;
          cnt += len - l;
          break;
        }
        j = ne[j];
      }
      if (!flag) {
        puts("0");
        return 0;
      }
    }
  }
  printf("%lld\n", qmi(26, n - cnt, 1000000007));
  return 0;
}
