#include <bits/stdc++.h>
using namespace std;
const long long N = 101;
const long long MOD = 1e9 + 7;
long long n, x;
string s;
long long p[N], dp[N][N][N];
long long ans() {
  p[0] = p[1] = 2;
  for (long long i = 2; i <= x; i++) {
    p[i] = p[i - 2] * p[i - 1] % MOD;
  }
  for (long long i = 1; i <= n; i++) {
    dp[s[i] - '0'][i][i] = 1;
  }
  for (long long t = 2; t <= x; t++) {
    for (long long len = 1; len <= n; len++) {
      for (long long l = 1; l + len - 1 <= n; l++) {
        long long r = l + len - 1;
        for (long long mid = l; mid < r; mid++) {
          dp[t][l][r] += dp[t - 1][l][mid] * dp[t - 2][mid + 1][r];
          dp[t][l][r] %= MOD;
        }
        dp[t][l][r] += dp[t - 1][l][r] * (r == n ? p[t - 2] : 1);
        dp[t][l][r] %= MOD;
        dp[t][l][r] += (l == 1 ? p[t - 1] : 1) * dp[t - 2][l][r];
        dp[t][l][r] %= MOD;
      }
    }
  }
  return dp[x][1][n];
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> x;
  string in;
  cin >> in;
  s += " ";
  for (long long i = 0; i < n; i++) s += in[i];
  cout << ans();
}
