#include <bits/stdc++.h>
using namespace std;
const int64_t MOD = 1e9 + 7;
void add(int64_t& a, int64_t b) { a = (a + b) % MOD; }
void mul(int64_t& a, int64_t b) { a = a * b % MOD; }
vector<vector<int64_t>> matmul(vector<vector<int64_t>> A,
                               vector<vector<int64_t>> B) {
  int Na = A.size(), Ma = A[0].size(), Nb = B.size(), Mb = B[0].size();
  assert(Ma == Nb);
  vector<vector<int64_t>> ans(Na, vector<int64_t>(Mb));
  for (int i = 0; i < Na; i++)
    for (int j = 0; j < Mb; j++)
      for (int k = 0; k < Ma; k++) add(ans[i][j], A[i][k] * B[k][j]);
  return ans;
}
int main() {
  int N, X;
  string S;
  cin >> N >> X >> S;
  vector<vector<int64_t>> A[101];
  for (int k = 0; k < 2; k++) {
    A[k] = vector<vector<int64_t>>(N + 1, vector<int64_t>(N + 1));
    for (int i = 1; i < N; i++) A[k][i][i] = 1;
    A[k][0][0] = A[k][N][N] = 2;
    for (int i = 0; i < N; i++)
      if (S[i] - '0' == k) A[k][i + 1][i] = 1;
  }
  for (int k = 2; k <= X; k++) A[k] = matmul(A[k - 2], A[k - 1]);
  cout << A[X][N][0] << endl;
  return 0;
}
