#include <bits/stdc++.h>
using namespace std;
const int N = 105, mod = 1e9 + 7;
int power[N];
int dp[N][N][N], pref[N][N][N], suff[N][N][N], exact[N][N][N];
int main() {
  int n, x;
  cin >> n >> x;
  string s;
  cin >> s;
  for (int i = 0; i < n; i++) {
    dp[s[i] - '0'][i][i + 1] = 1;
    pref[s[i] - '0'][i][i + 1] = 1;
    suff[s[i] - '0'][i][i + 1] = 1;
    exact[s[i] - '0'][i][i + 1] = 1;
  }
  power[0] = power[1] = 2;
  for (int i = 2; i <= x; i++) {
    power[i] = 1LL * power[i - 1] * power[i - 2] % mod;
    for (int len = 1; len <= n; len++)
      for (int l = 0; l + len <= n; l++) {
        int r = l + len;
        dp[i][l][r] = 1LL * dp[i - 1][l][r] * power[i - 2] % mod +
                      1LL * dp[i - 2][l][r] * power[i - 1] % mod;
        dp[i][l][r] %= mod;
        for (int m = l + 1; m < r; m++)
          dp[i][l][r] = ((long long)dp[i][l][r] +
                         1LL * suff[i - 1][l][m] * pref[i - 2][m][r] % mod) %
                        mod;
        pref[i][l][r] = 1LL * pref[i - 1][l][r] * power[i - 2] % mod;
        pref[i][l][r] = (pref[i][l][r] + pref[i - 2][l][r]) % mod;
        for (int m = l + 1; m < r; m++)
          pref[i][l][r] = ((long long)pref[i][l][r] +
                           1LL * exact[i - 1][l][m] * pref[i - 2][m][r]) %
                          mod;
        suff[i][l][r] = 1LL * suff[i - 2][l][r] * power[i - 1] % mod;
        suff[i][l][r] = (suff[i][l][r] + suff[i - 1][l][r]) % mod;
        for (int m = l + 1; m < r; m++)
          suff[i][l][r] = ((long long)suff[i][l][r] +
                           1LL * exact[i - 2][m][r] * suff[i - 1][l][m]) %
                          mod;
        exact[i][l][r] = (exact[i - 1][l][r] + exact[i - 2][l][r]) % mod;
        for (int m = l + 1; m < r; m++)
          exact[i][l][r] = ((long long)exact[i][l][r] +
                            1LL * exact[i - 1][l][m] * exact[i - 2][m][r]) %
                           mod;
      }
  }
  cout << dp[x][0][n] << endl;
}
