#include <bits/stdc++.h>
using namespace std;
int dp[26];
int m[1000001];
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  string s;
  cin >> s;
  for (int i = 0; i < s.length(); i++) {
    m[i] = s[i] - 'a';
  }
  vector<int> order;
  for (int i = 0; i < s.length(); i++) {
    for (int j = 0; j < k; j++) {
      if (j == m[i]) {
        continue;
      }
      dp[m[i]] += dp[j];
      dp[m[i]] %= 1000000007;
    }
    dp[m[i]]++;
    dp[m[i]] %= 1000000007;
    auto itr = find(order.begin(), order.end(), m[i]);
    if (itr != order.end()) {
      order.erase(itr);
    }
    order.push_back(m[i]);
  }
  for (int i = 0; i < k; i++) {
    if (find(order.begin(), order.end(), i) == order.end()) {
      order.insert(order.begin(), i);
    }
  }
  for (int i = 0; i < n; i++) {
    int minInd = order[i % order.size()];
    for (int j = 0; j < k; j++) {
      if (j == minInd) {
        continue;
      }
      dp[minInd] += dp[j];
      dp[minInd] %= 1000000007;
    }
    dp[minInd]++;
    dp[minInd] %= 1000000007;
  }
  int ans = 1;
  for (int i = 0; i < k; i++) {
    ans += dp[i];
    ans %= 1000000007;
  }
  cout << ans << endl;
}
