#include <bits/stdc++.h>
const long long mod = 1e9 + 7;
long long n, K, f[110][110][110], length[110];
char S[110];
signed main() {
  scanf("%lld%lld", &n, &K);
  scanf("%s", S + 1);
  for (long long i = 1; i <= n; i++)
    if (S[i] == '1')
      f[1][i][i] = 1;
    else
      f[0][i][i] = 1;
  length[0] = length[1] = 2;
  for (long long i = 2; i <= K; i++)
    length[i] = length[i - 1] * length[i - 2] % mod;
  for (long long i = 2; i <= K; i++)
    for (long long l = 1; l <= n; l++)
      for (long long r = l; r <= n; r++) {
        long long tmp1, tmp2;
        if (l == 1)
          tmp1 = length[i - 1];
        else
          tmp1 = 1;
        if (r == n)
          tmp2 = length[i - 2];
        else
          tmp2 = 1;
        (f[i][l][r] += (tmp1 * f[i - 2][l][r] + tmp2 * f[i - 1][l][r]) % mod) %=
            mod;
        for (long long k = l; k < r; k++)
          (f[i][l][r] += f[i - 1][l][k] * f[i - 2][k + 1][r]) %= mod;
      }
  printf("%lld\n", f[K][1][n]);
}
