#include <bits/stdc++.h>
using namespace std;
const int N = 105, mod = 1e9 + 7;
int n, x, f[N][N][N], pw[N];
string s;
int calc(int l, int r, int id) {
  if (l > r) return 1;
  if (id <= 1) return l == r && (s[l] == ('0' + id));
  int &ret = f[l][r][id];
  if (ret != -1) return ret;
  ret = 0;
  for (int mid = l - 1; mid <= r; ++mid) {
    int res = (1LL * calc(l, mid, id - 1) * calc(mid + 1, r, id - 2)) % mod;
    if (mid + 1 == l && l == 0)
      res = (1LL * pw[id - 1] * calc(mid + 1, r, id - 2)) % mod;
    if (mid == r && r == n - 1)
      res = (1LL * pw[id - 2] * calc(l, mid, id - 1)) % mod;
    ret = (ret + res) % mod;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> x >> s;
  memset(f, -1, sizeof f);
  pw[0] = pw[1] = 2;
  for (int i = 2; i < N; ++i) pw[i] = (1LL * pw[i - 1] * pw[i - 2]) % mod;
  cout << calc(0, n - 1, x);
  return 0;
}
