/*
TASK: expres
LANG: C
*/
#include<stdio.h>
#include<string.h>

#define DIG 12
#define LEN 16
#define MAXN 64
#define INF 1000000000

int d[DIG][DIG],s[DIG][DIG],a[MAXN],f[2*MAXN][MAXN][2*MAXN];
char ch[DIG][LEN],input[5][256],p[2*MAXN][MAXN][2*MAXN][4];

int convert(int k)
{
	int i,j;
	for(i=0;i<DIG;i++)
	{
		for(j=0;j<LEN-1;j++) if(input[j/3][3*k+j%3]!=ch[i][j]) break;
		if(j==LEN-1) return i;
	}
	return -1;
}

int count(int e1,int e2)
{
	int i,res=0;
	for(i=0;i<LEN-1;i++) res+=ch[e1][i]-ch[e2][i];
	return res;
}

void print(int i,int k)
{
	int j;
	for(j=0;j<LEN-1;j++)
	{
		input[j/3][3*k+j%3]=ch[i][j];
	}
}

int diff(int e1,int e2)
{
	int i,res=0;
	for(i=0;i<LEN-1;i++) if(ch[e1][i]!=ch[e2][i]) res++;
	return res;
}

int main()
{
	int i,j,l,q,n,k,t1,t2,res;
	strcpy(ch[0],"111101101101111");
	strcpy(ch[1],"001001001001001");
	strcpy(ch[2],"111001111100111");
	strcpy(ch[3],"111001111001111");
	strcpy(ch[4],"101101111001001");
	strcpy(ch[5],"111100111001111");
	strcpy(ch[6],"111100111101111");
	strcpy(ch[7],"111001001001001");
	strcpy(ch[8],"111101111101111");
	strcpy(ch[9],"111101111001111");
	strcpy(ch[10],"000010111010000");
	strcpy(ch[11],"000000111000000");
	for(i=0;i<DIG;i++)
	{
		for(j=i+1;j<DIG;j++)
		{
			d[i][j]=d[j][i]=diff(i,j);
			s[i][j]=count(i,j);
			s[j][i]=-s[i][j];
		}
	}
	scanf("%d%d",&n,&k);
	for(i=0;i<5;i++) scanf("%s",input[i]);
	for(i=0;i<2*n-1;i++) a[i]=convert(i);
	for(i=0;i<=2*n;i++)
	{
		for(j=0;j<=k;j++)
		{
			for(l=0;l<2*MAXN;l++) f[i][j][l]=-INF;
		}
	}
	f[0][k][MAXN]=0;
	for(i=0;i<2*n-1;i+=2)
	{
		for(j=0;j<=k;j++)
		{
			for(l=0;l<2*MAXN;l++)
			{
				if(f[i][j][l]==-INF) continue;
				for(q=0;q<=9;q++)
				{
					if(j<d[a[i]][q]) continue;
					if(i==0||(a[i-1]==10))
					{
						if(f[i][j][l]+q>f[i+2][j-d[a[i]][q]][l+s[a[i]][q]]) f[i+2][j-d[a[i]][q]][l+s[a[i]][q]]=f[i][j][l]+q;
					}
					else
					{
						if(f[i][j][l]-q>f[i+2][j-d[a[i]][q]][l+s[a[i]][q]]) f[i+2][j-d[a[i]][q]][l+s[a[i]][q]]=f[i][j][l]-q;
					}
					if(j<d[a[i]][q]+2) continue;
					if(a[i-1]==11)
					{
						if(f[i][j][l]+q>f[i+2][j-d[a[i]][q]-2][l+s[a[i]][q]-2]) f[i+2][j-d[a[i]][q]-2][l+s[a[i]][q]-2]=f[i][j][l]+q;
					}
					else
					{
						if(f[i][j][l]-q>f[i+2][j-d[a[i]][q]-2][l+s[a[i]][q]+2]) f[i+2][j-d[a[i]][q]-2][l+s[a[i]][q]+2]=f[i][j][l]-q;
					}
				}
			}
		}
	}
	res=0;
	for(i=1;i<=k;i++)
	{
		if(f[2*n][i][MAXN]>f[2*n][res][MAXN]) res=i;
	}
	printf("%d\n",f[2*n][res][MAXN]);
	for(i=2*n;i>=0;i--)
	{
	}
	return 0;
}
