#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
void add(int& x, int y) {
  x += y;
  if (x >= mod) x -= mod;
}
int mul(int x, int y) { return 1ll * x * y % mod; }
int n, x;
string s;
int f[105][105][105], pw[105];
int calc(int l, int r, int k) {
  if (l > r) return 1;
  if (k < 2) return l == r && s[l] == k + '0';
  int& ret = f[l][r][k];
  if (~ret) return ret;
  ret = 0;
  for (int mid = l - 1; mid <= r; ++mid) {
    int coef = 1;
    if (mid == -1) coef = mul(coef, pw[k - 1]);
    if (mid == n - 1) coef = mul(coef, pw[k - 2]);
    add(ret, mul(coef, mul(calc(l, mid, k - 1), calc(mid + 1, r, k - 2))));
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> x >> s;
  memset(f, -1, sizeof f);
  pw[0] = pw[1] = 2;
  for (int i = 2; i <= 100; ++i) pw[i] = mul(pw[i - 1], pw[i - 2]);
  cout << calc(0, n - 1, x) << '\n';
}
