#include <bits/stdc++.h>
using namespace std;
int pr[1000001];
void prefix(const string& str) {
  int si = str.size();
  int st = 0, en = 0;
  for (int i = 1; i < si; ++i) {
    if (en >= i && pr[i - st] + i - 1 < en)
      pr[i] = pr[i - st];
    else {
      int k = pr[i - st];
      st = i;
      if (en < i) en = i - 1, k = 0;
      while (en + 1 < si && str[en + 1] == str[k]) en++, k++;
      pr[i] = en - st + 1;
    }
  }
  return;
}
int main() {
  int n, m;
  cin >> n >> m;
  string str;
  cin >> str;
  prefix(str);
  int p = str.size();
  int tot = 0, j = 1;
  int flag = 1;
  for (int i = 0; i < m; ++i) {
    int y;
    cin >> y;
    if (y < j && pr[y - j + p] + y < j) flag = -1;
    if (y >= j) tot += y - j;
    if (y + p > j) j = y + p;
  }
  if (flag == -1) {
    cout << 0 << endl;
    return 0;
  }
  tot += (n + 1 - j);
  long long int res = 1;
  long long int base = 26;
  while (tot > 0) {
    if (tot % 2 == 1) res = (res * base) % 1000000007;
    base = (base * base) % 1000000007;
    tot /= 2;
  }
  cout << res << endl;
  return 0;
}
