#include <bits/stdc++.h>
using namespace std;
long long n, x, f[101][101][101], g[101];
char s[101];
int main() {
  scanf("%I64d%I64d%s", &n, &x, s + 1);
  for (long long i = 1; i <= n; i++) f[s[i] - '0'][i][i] = 1;
  g[0] = g[1] = 2;
  for (long long i = 2; i <= x; i++) g[i] = g[i - 1] * g[i - 2] % 1000000007;
  for (long long i = 2; i <= x; i++)
    for (long long l = 1; l <= n; l++)
      for (long long r = l; r <= n; r++) {
        for (long long m = l; m < r; m++)
          f[i][l][r] += f[i - 1][l][m] * f[i - 2][m + 1][r] % 1000000007,
              f[i][l][r] %= 1000000007;
        f[i][l][r] += f[i - 1][l][r] * (r == n ? g[i - 2] : 1) % 1000000007,
            f[i][l][r] %= 1000000007;
        f[i][l][r] += f[i - 2][l][r] * (l == 1 ? g[i - 1] : 1) % 1000000007,
            f[i][l][r] %= 1000000007;
      }
  return printf("%I64d\n", f[x][1][n]), 0;
}
