#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
int n, m;
long long f[105][105][105];
char s[105];
int l[105];
long long power(long long x, long long y) {
  long long ret = 1;
  for (; y; y >>= 1, x = x * x % mod)
    if (y & 1) ret = ret * x % mod;
  return ret;
}
int main() {
  scanf("%d%d", &n, &m);
  scanf("%s", s + 1);
  for (int i = 1; i <= n; i++) f[s[i] == '1'][i][i] = 1;
  l[0] = l[1] = 1;
  for (int i = 2; i <= m; i++) l[i] = (l[i - 1] + l[i - 2]) % (mod - 1);
  for (int i = 2; i <= m; i++)
    for (int j = 1; j <= n; j++)
      for (int k = j; k <= n; k++) {
        if (k == n)
          (f[i][j][k] += f[i - 1][j][k] * power(2, l[i - 2]) % mod) %= mod;
        else
          (f[i][j][k] += f[i - 1][j][k]) %= mod;
        if (j == 1)
          (f[i][j][k] += f[i - 2][j][k] * power(2, l[i - 1]) % mod) %= mod;
        else
          (f[i][j][k] += f[i - 2][j][k]) %= mod;
        for (int p = j; p < k; p++)
          (f[i][j][k] += f[i - 1][j][p] * f[i - 2][p + 1][k] % mod) %= mod;
      }
  printf("%lld\n", f[m][1][n]);
  return 0;
}
