#include <bits/stdc++.h>
char s[100 + 2];
int pi[100 + 1], v[100 + 1];
int f[100 + 1][100 + 2][100 + 2];
int main() {
  int n, k;
  scanf("%d%d ", &n, &k);
  int r = 0;
  s[1] = fgetc(stdin);
  for (int i = 2; i <= n; i++) {
    s[i] = fgetc(stdin);
    while (r && s[r + 1] != s[i]) r = pi[r];
    if (s[r + 1] == s[i]) r++;
    pi[i] = r;
  }
  for (int i = 0; i <= n; i++) {
    if (s[i + 1] == '0')
      v[i] = i + 1;
    else
      v[i] = v[pi[i]];
    f[0][i][v[i]]++;
    if (v[i] == n) f[0][i][n + 1]++;
    f[0][i][i]++;
  }
  f[0][n + 1][n + 1] = 2;
  v[0] = 0;
  for (int i = 0; i <= n; i++) {
    if (s[i + 1] == '1')
      v[i] = i + 1;
    else
      v[i] = v[pi[i]];
    f[1][i][v[i]]++;
    if (v[i] == n) f[1][i][n + 1]++;
    f[1][i][i]++;
  }
  f[1][n + 1][n + 1] = 2;
  n++;
  for (int q = 2; q <= k; q++)
    for (int i = 0; i <= n; i++)
      for (int j = 0; j <= n; j++)
        for (int p = 0; p <= n; p++)
          f[q][i][j] =
              (f[q][i][j] + 1LL * f[q - 1][i][p] * f[q - 2][p][j]) % 1000000007;
  printf("%d\n", f[k][0][n]);
  return 0;
}
