#include <bits/stdc++.h>
long long constexpr mo = 1000000007;
int constexpr maxn = 27;
long long a[maxn];
int n, k;
struct data {
  int ch;
  int last;
};
std::vector<data> v;
std::string s;
int main() {
  std::cin >> n >> k;
  v.resize(k);
  for (int i = 0; i < k; i++) v[i].ch = i;
  std::cin >> s;
  long long sum = 0;
  for (int i = 0; i < (int)s.size(); i++) {
    v[s[i] - 'a'].last = i + 1;
    long long tmp = (sum + 1) % mo;
    sum = (sum + tmp - a[s[i] - 'a']) % mo;
    sum = (sum + mo) % mo;
    a[s[i] - 'a'] = tmp;
  }
  std::sort(v.begin(), v.end(),
            [](data const& a, data const& b) { return a.last < b.last; });
  int t = 0;
  for (int i = 0; i < n; i++, t = (t + 1) % k) {
    long long tmp = (sum + 1) % mo;
    sum = (sum + tmp - a[v[t].ch]) % mo;
    sum = (sum + mo) % mo;
    a[v[t].ch] = tmp;
  }
  sum = (sum + 1) % mo;
  std::cout << sum << '\n';
}
