#include <bits/stdc++.h>
using namespace std;
const int N = 107;
const int mod = 1e9 + 7;
int n, m, dp[N][N][N], Pow[N];
char s[N];
int main() {
  scanf("%d%d", &n, &m);
  scanf("%s", s + 1);
  for (int i = 1, iE = n; i <= iE; i++) {
    dp[0][i][i - 1] = dp[1][i][i - 1] = 1;
    if (s[i] == '0')
      dp[0][i][i] = 1;
    else
      dp[1][i][i] = 1;
  }
  Pow[0] = Pow[1] = 2;
  for (int i = 2, iE = m; i <= iE; i++) {
    Pow[i] = 1ll * Pow[i - 1] * Pow[i - 2] % mod;
    for (int j = 1, jE = n; j <= jE; j++)
      for (int k = j - 1, kE = n; k <= kE; k++)
        for (int l = j - 1, lE = k; l <= lE; l++) {
          if (l == 0)
            (dp[i][1][k] += 1ll * Pow[i - 1] * dp[i - 2][1][k] % mod) %= mod;
          else if (l == n)
            (dp[i][j][n] += 1ll * dp[i - 1][j][n] * Pow[i - 2] % mod) %= mod;
          else
            (dp[i][j][k] +=
             1ll * dp[i - 1][j][l] * dp[i - 2][l + 1][k] % mod) %= mod;
        }
  }
  printf("%d\n", dp[m][1][n]);
  return 0;
}
