#include<iostream>
#include<string>
using namespace std;
const int N = 10, D = 110, M = 5e4 + 10;
int n, d, pow2[N], pow6[N], f[D][6][M], ans = -1;
string s;
int get(int x, int y){
return x / pow6[y] % 6;
}
int main(){
cin >> n >> d >> s;
pow6[0] = 1;
for(int i = 1; i <= n; i++) pow6[i] = pow6[i-1] * 6;
pow2[0] = 1;
for(int i = 1; i <= 5; i++) pow2[i] = pow2[i-1] * 2;
for(int i = 0; i < D; i++){
for(int j = 0; j < 6; j++){
for(int k = 0; k < M; k++) f[i][j][k] = -1;
}
}
f[0][0][0] = 0;
for(int i = 0; i < d; i++){
for(int j = 0; j < 6; j++){
for(int k = 0; k < pow6[n]-1; k++){
if(f[i][j][k] != -1){
int w = s[i] - '0';
if(j == 0){
f[i+1][w][k] = max(f[i+1][w][k], f[i][j][k]);
if(i == d-1) ans = max(ans, f[i][j][k]);
}
for(int ii = 0; ii < n; ii++){
if(get(k, ii) == 0){
int t = k, cnt = 0; w = s[i] - '0';
t += w * pow6[ii];
if(ii != 0 && ii != n-1 && get(t, ii-1) == w && get(t, ii+1) == w){
t -= w * pow6[ii-1] + w * pow6[ii] + w * pow6[ii+1]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 3;
}
if(ii != 0 && get(t, ii-1) == w){
t -= w * pow6[ii-1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
if(ii != n-1 && get(t, ii+1) == w){
t -= w * pow6[ii+1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
if(ii != 0 && get(t, ii-1) == w){
t -= w * pow6[ii-1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
f[i+1][j][t] = max(f[i+1][j][t], f[i][j][k] + cnt);
if(i == d-1) ans = max(ans, f[i][j][k] + cnt);
}
}
if(j != 0){
for(int ii = 0; ii < n; ii++){
if(get(k, ii) == 0){
int t = k, cnt = 0; w = j;
t += w * pow6[ii];
if(ii != 0 && ii != n-1 && get(t, ii-1) == w && get(t, ii+1) == w){
t -= w * pow6[ii-1] + w * pow6[ii] + w * pow6[ii+1]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 3;
}
if(ii != 0 && get(t, ii-1) == w){
t -= w * pow6[ii-1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
if(ii != n-1 && get(t, ii+1) == w){
t -= w * pow6[ii+1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
if(ii != 0 && get(t, ii-1) == w){
t -= w * pow6[ii-1] + w * pow6[ii]; w++;
if(w <= 5){
t += w * pow6[ii];
}
cnt += pow2[w-1] * 2;
}
f[i+1][0][t] = max(f[i+1][0][t], f[i][j][k] + cnt);
if(i == d-1) ans = max(ans, f[i][j][k] + cnt);
}
}
}
}
}
}
}
cout << ans;
return 0;
}