#include <bits/stdc++.h>
using namespace std;
const int maxn = 100 + 5;
const int mod = 1e9 + 7;
long long dp[maxn][maxn][maxn];
long long f[maxn];
char a[maxn];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long len, n;
  cin >> len >> n >> a + 1;
  for (long long i = 1; i <= len; i++) dp[a[i] - '0'][i][i] = 1;
  f[0] = f[1] = 2;
  for (long long i = 2; i <= n; i++) f[i] = (f[i - 1] * f[i - 2]) % mod;
  for (long long i = 2; i <= n; i++)
    for (long long l = 1; l <= len; l++)
      for (long long r = l; r <= len; r++) {
        dp[i][l][r] =
            (dp[i][l][r] + (r == len ? f[i - 2] : 1) * dp[i - 1][l][r] % mod +
             (l == 1 ? f[i - 1] : 1) * dp[i - 2][l][r] % mod) %
            mod;
        for (long long k = l; k < r; k++)
          dp[i][l][r] =
              (dp[i][l][r] + dp[i - 1][l][k] * dp[i - 2][k + 1][r]) % mod;
      }
  cout << dp[n][1][len];
  return 0;
}
