#include <bits/stdc++.h>
using namespace std;
int n, x;
long long g[105], f[105][105][105], mod = 1e9 + 7;
char s[105];
long long Pow(long long a, long long b) {
  long long rec = 1;
  for (; b; b >>= 1, a = a * a % mod)
    if (b & 1) rec = rec * a % mod;
  return rec;
}
void add(long long &x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
}
int main() {
  scanf("%d%d%s", &n, &x, s + 1);
  g[0] = g[1] = 1;
  for (int i = 2; i <= x; i++) g[i] = (g[i - 1] + g[i - 2]) % (mod - 1);
  for (int i = 0; i <= x; i++) g[i] = Pow(2, g[i]);
  for (int i = 1; i <= n; i++)
    if (s[i] == '0')
      f[i][i][0] = 1;
    else
      f[i][i][1] = 1;
  for (int i = 2; i <= x; i++)
    for (int l = 1; l <= n; l++)
      for (int r = l; r <= n; r++) {
        if (r == n)
          add(f[l][r][i], f[l][r][i - 1] * g[i - 2] % mod);
        else
          add(f[l][r][i], f[l][r][i - 1]);
        if (l == 1)
          add(f[l][r][i], f[l][r][i - 2] * g[i - 1] % mod);
        else
          add(f[l][r][i], f[l][r][i - 2]);
        for (int k = l; k < r; k++)
          add(f[l][r][i], f[l][k][i - 1] * f[k + 1][r][i - 2] % mod);
      }
  printf("%lld", f[1][n][x]);
}
