/*
TASK: EXPRES
LANG: C
*/

#include <stdio.h>
#define PLUS -1
#define MINUS -2
#define WTF -13

int N,K,max;
int a[128][10];
int subst[10][10][2];
int subPM[2][2][2];

char c2i(char c) {
     char res;
     res = ((char)c) - ((char)'0');
     return res;
}

void cpy(){
   int i;
   for(i=0;i<N*2-1;i++)
      a[i][1] = a[i][0];
}

int calc(int l){
    int res = a[0][l];
    int i;
    for(i=1;i<N*2-1;i++){
       if (a[i][l] == PLUS)
          res += a[++i][l];
       else if (a[i][l] == MINUS)
            res -= a[++i][l];
       else printf("err %d   ",a[i][l]);
    }
    return res;
}

int conv(int i) {
   if (a[i][0] == 0) {
      if (a[i][1] == 2)
         return PLUS;
      return MINUS;
   }
   if (a[i][0] == 1)
      return 1;
   if (a[i][0] == 5) {
      return 4;
   }
   if (a[i][0] == 7) {
      if ((a[i][1] == 5) && (a[i][2] == 5) && (a[i][3] == 5))
         return 0;
      if ((a[i][1] == 1) && (a[i][3] == 4))
         return 2;
      if ((a[i][1] == 1) && (a[i][2] == 7))
         return 7;
      if ((a[i][1] == 4) && (a[i][3] == 1))
         return 5;
      if ((a[i][1] == 4) && (a[i][3] == 5))
         return 6;
      if (a[i][4] == 1)
         return 7;
      if ((a[i][1] == 5) && (a[i][2] == 7) && (a[i][3] == 5))
         return 8;
      if ((a[i][1] == 5) && (a[i][2] == 7) && (a[i][3] == 1))
         return 9;
   }
   return WTF;
}

void DFS(int s, int k, int z, int o) {
     printf("DFS(%d,%d,%d,%d) ",s,k,z,o);
     a[s][2] = 1;
     if (k > K) return;
     int tmax = calc(1);
     if ((tmax > max)&&(z == o)) {
        max = tmax;
     }
     int t,i,j;
     if (s%2==0){
        for(i=0;i<=9;i++){
           t = a[s][1];
           a[s][1] = i;
           for(j=0;j<N*2-1;j++){
               if (a[j][2] != 1)
               DFS(j,k+subst[t][i][0]+subst[t][i][1],z+subst[t][i][0],o+subst[t][i][1]);
           }
           a[s][1] = t;
        }
     } else {
        for(i=1;i<=2;i++){
          t = a[s][1];
          a[s][1] = -i;
          for(j=0;j<N*2-1;j++){
               if (a[j][2] != 1)
               DFS(j,k+subPM[-t][i][0]+subPM[-t][i][1],z+subPM[-t][i][0],o+subPM[-t][i][1]);
           }
           a[s][1] = t;
        }
     }
     a[s][2] = 0;
     printf("\n");
}

int main() {
   scanf("%d %d",&N,&K);char tc;
   scanf("%c",&tc);
   int l,i;
   for(l=0;l<5;l++) {
       for(i=0;i<N*2-1;i++){
          char c1,c2,c3;
          scanf("%c %c %c",&c1,&c2,&c3);
         // printf("%d %d %d   ",(int)c1,(int)c2,(int)c3);
          c1 = c2i(c1); c2 = c2i(c2); c3 = c2i(c3);
          int t = (c1*4) + (c2*2) + c3;
          a[i][l] = t;
       }
       scanf("%c",&tc);
   }

   for(i=0;i<N*2-1;i++)      {
      a[i][0] = conv(i);
      //printf("%d ",a[i][0]);
   }
   //printf("\n");

   subst[0][0][0] = 0; subst[0][0][1] = 0;
   subst[0][1][0] = 0; subst[0][1][1] = 7;
   subst[0][2][0] = 1; subst[0][2][1] = 2;
   subst[0][3][0] = 1; subst[0][3][1] = 2;
   subst[0][4][0] = 1; subst[0][4][1] = 4;
   subst[0][5][0] = 1; subst[0][5][1] = 2;
   subst[0][6][0] = 1; subst[0][6][1] = 1;
   subst[0][7][0] = 0; subst[0][7][1] = 5;
   subst[0][8][0] = 1; subst[0][8][1] = 0;
   subst[0][9][0] = 1; subst[0][9][1] = 1;

   subst[1][1][0] = 0; subst[1][1][1] = 0;
   subst[1][2][0] = 7; subst[1][2][1] = 1;
   subst[1][3][0] = 6; subst[1][3][1] = 0;
   subst[1][4][0] = 1; subst[1][4][1] = 4;
   subst[1][5][0] = 7; subst[1][5][1] = 1;
   subst[1][6][0] = 8; subst[1][6][1] = 1;
   subst[1][7][0] = 2; subst[1][7][1] = 0;
   subst[1][8][0] = 8; subst[1][8][1] = 0;
   subst[1][9][0] = 4; subst[1][9][1] = 0;

   subst[2][2][0] = 0; subst[2][2][1] = 0;
   subst[2][3][0] = 1; subst[2][3][1] = 1;
   subst[2][4][0] = 2; subst[2][4][1] = 3;
   subst[2][5][0] = 2; subst[2][5][1] = 2;
   subst[2][6][0] = 2; subst[2][6][1] = 1;
   subst[2][7][0] = 1; subst[2][7][1] = 5;
   subst[2][8][0] = 2; subst[2][8][1] = 0;
   subst[2][9][0] = 2; subst[2][9][1] = 1;

   subst[3][3][0] = 0; subst[3][3][1] = 0;
   subst[3][4][0] = 1; subst[3][4][1] = 3;
   subst[3][5][0] = 1; subst[3][5][1] = 1;
   subst[3][6][0] = 2; subst[3][6][1] = 1;
   subst[3][7][0] = 0; subst[3][7][1] = 4;
   subst[3][8][0] = 2; subst[3][8][1] = 0;
   subst[3][9][0] = 1; subst[3][9][1] = 0;
   
   subst[4][4][0] = 0; subst[4][4][1] = 0;
   subst[4][5][0] = 3; subst[4][5][1] = 1;
   subst[4][6][0] = 4; subst[4][6][1] = 1;
   subst[4][7][0] = 1; subst[4][7][1] = 3;
   subst[4][8][0] = 4; subst[4][8][1] = 0;
   subst[4][9][0] = 3; subst[4][9][1] = 0;

   subst[5][5][0] = 0; subst[5][5][1] = 0;
   subst[5][6][0] = 1; subst[5][6][1] = 0;
   subst[5][7][0] = 1; subst[5][7][1] = 5;
   subst[5][8][0] = 2; subst[5][8][1] = 0;
   subst[5][9][0] = 1; subst[5][9][1] = 0;

   subst[6][6][0] = 0; subst[6][6][1] = 0;
   subst[6][7][0] = 1; subst[6][7][1] = 6;
   subst[6][8][0] = 1; subst[6][8][1] = 0;
   subst[6][9][0] = 1; subst[6][9][1] = 1;

   subst[7][7][0] = 0; subst[7][7][1] = 0;
   subst[7][8][0] = 6; subst[7][8][1] = 0;
   subst[7][9][0] = 5; subst[7][9][1] = 0;

   subst[8][8][0] = 0; subst[8][8][1] = 0;
   subst[8][9][0] = 1; subst[8][9][1] = 0;

   subst[9][9][0] = 0; subst[9][9][1] = 0;

   for(i=0;i<10;i++)
      for(l=i+1;l<10;l++){
         subst[l][i][0] = subst[i][l][1];
         subst[l][i][1] = subst[i][l][0];
      }

     subPM[0][0][0] = 0; subPM[0][0][1] = 0;
     subPM[0][1][0] = 0; subPM[0][1][1] = 2;
     subPM[1][1][0] = 0; subPM[1][1][1] = 0;
     subPM[1][0][0] = 2; subPM[1][0][1] = 0;

     //printf("...");
     cpy();
     max = calc(0);
     for(i=0;i<N*2-1;i++) {
        cpy();
        int j;
        for(j=0;j<128;j++)
           a[j][2] = 0;
        DFS(i,0,0,0);
     }

     printf("%d\n",max);
}
