#include <bits/stdc++.h>
const int mu = 1e9 + 7;
int n, m, dp[105][105][105];
char s[105];
int main() {
  scanf("%d%d", &n, &m);
  scanf("%s", s + 1);
  for (int i = 1; i <= n; i++)
    if (s[i] == '0')
      dp[0][i - 1][i] = 1;
    else
      dp[1][i - 1][i] = 1;
  dp[0][0][0] = 2, dp[1][0][0] = 2;
  for (int i = 1; i < n; i++) dp[0][i][i] = dp[1][i][i] = 1;
  dp[0][n][n] = 2, dp[1][n][n] = 2;
  for (int i = 2; i <= m; i++) {
    for (int j = 0; j <= n; j++)
      for (int k = j; k <= n; k++)
        for (int h = k; h <= n; h++)
          dp[i][j][h] =
              (dp[i][j][h] + 1ll * dp[i - 1][j][k] * 1ll * dp[i - 2][k][h]) %
              mu;
  }
  printf("%d\n", dp[m][0][n]);
}
