{
TASK: expres
LANG: PASCAL
}
{$R-}
const

 c : array[0..9,1..5,1..3]of longint =  (((1,1,1),
                                       (1,0,1),
                                       (1,0,1),
                                       (1,0,1),
                                       (1,1,1)),
  ((0,0,1),
                                       (0,0,1),
                                       (0,0,1),
                                       (0,0,1),
                                       (0,0,1)),
 ((1,1,1),
                                       (0,0,1),
                                       (1,1,1),
                                       (1,0,0),
                                       (1,1,1)),

 ((1,1,1),
                                       (0,0,1),
                                       (1,1,1),
                                       (0,0,1),
                                       (1,1,1)),

 ((1,0,1),
                                       (1,0,1),
                                       (1,1,1),
                                       (0,0,1),
                                       (0,0,1)),

 ((1,1,1),
                                       (1,0,0),
                                       (1,1,1),
                                       (0,0,1),
                                       (1,1,1)),
 ((1,1,1),
                                       (1,0,0),
                                       (1,1,1),
                                       (1,0,1),
                                       (1,1,1)),
 ((1,1,1),
                                       (0,0,1),
                                       (0,0,1),
                                       (0,0,1),
                                       (0,0,1)),
 ((1,1,1),
                                       (1,0,1),
                                       (1,1,1),
                                       (1,0,1),
                                       (1,1,1)),
 ((1,1,1),
                                       (1,0,1),
                                       (1,1,1),
                                       (0,0,1),
                                       (1,1,1)));


 plus : array[1..5,1..3] of longint = ((0,0,0),
                                       (0,1,0),
                                       (1,1,1),
                                       (0,1,0),
                                       (0,0,0));
 minus: array[1..5,1..3] of longint = ((0,0,0),
                                       (0,0,0),
                                       (1,1,1),
                                       (0,0,0),
                                       (0,0,0));

 maxn = 41;
 maxk = 41;
type
 fig = array[1..5,1..3] of longint;
 cell = record v,inx,k  : longint; s : boolean; end;
var
  d   : array[0..2*maxn] of fig;
  dbr : longint;
  w,t : array[1..5,1..6*maxn] of longint;
  b : array[1..maxn] of longint;
  s : array[1..maxn] of boolean;
  n,k,i,j,j1,h,x,value,cr,br : longint;
  ch : char;
  fl,sg : boolean;
  tr : array[0..9,0..9,0..1] of longint;
  a  : array[0..maxn,-maxk..maxk] of cell;
  ansp : array[0..maxn] of longint;
  anss : array[0..maxn] of boolean;
procedure init;
begin
   readln(n,k);
   for i:=1 to 5 do
   begin
      for j:=1 to (n*2-1)*3 do
      begin
         read(ch);
         w[i,j]:=ord(ch)-48;
      end;
      readln;
   end;
end;
procedure prepro;
begin
   for i:=1 to 5 do
    for j:=1 to 3 do
    d[1][i,j]:=plus[i][j];
   s[1]:=true;
   dbr:=1;
   for h:=1 to 2*n-1 do
   begin
      inc(dbr);
      j1:=0;
      for j:=h*3-2 to h*3 do
      begin
         inc(j1);
       for i:=1 to 5 do
       begin
          d[dbr][i,j1]:=w[i,j];
       end;
      end;
   end;
end;
procedure getexp;
begin
   for h:=1 to dbr do
   begin
      fl:=false;
      if h mod 2 = 1 then
      begin
         fl:=false;
         for i:=1 to 5 do
         begin
          for j:=1 to 3 do
          if plus[i,j]<>d[h][i,j] then begin fl:=true; break; end;
          if fl then break;
         end;
         if not fl then
          begin s[(h div 2)+1]:=true; continue; end;
         fl:=false;
         for i:=1 to 5 do
         begin
          for j:=1 to 3 do
          if minus[i,j]<>d[h][i,j] then begin fl:=true; break; end;
          if fl  then break;
         end;
         if not fl then
          begin s[(h div 2)+1]:=false; continue; end;
      end
      else
      begin
         for x:=0 to 9 do
         begin
            fl:=false;
            for i:=1 to 5 do
            begin
               for j:=1 to 3 do
               if c[x,i,j]<>d[h][i,j] then begin fl:=true; break; end;
               if fl then break;
            end;
            if not fl then
            begin b[(h div 2)]:=x; break end;
         end;
      end;
   end;
end;
procedure transf;
var
 f1,f2 : longint;
begin
   for f1:=0 to 9 do
   begin
      for f2:=0 to 9 do
      for i:=1 to 5 do
       for j:=1 to 3 do
       if c[f1,i,j]<>c[f2,i,j] then
       begin
          if c[f1,i,j]=0 then inc(tr[f1,f2,1])
                         else inc(tr[f1,f2,0]);
       end;
   end;
end;
procedure predp;
begin
   for i:=1 to n do
    for j:=-maxk to maxk do
    begin
       a[i,j].v:=-(1 shl 30);
       a[i,j].inx:=-1;
       a[i,j].k:=k+1;
    end;
end;
procedure dp;
begin
   for x:=0 to 9 do
   if tr[b[1],x,1]+tr[b[1],x,0]<=k then
   if a[1,tr[b[1],x,1]-tr[b[1],x,0]].v<x then
   begin
      a[1,tr[b[1],x,1]-tr[b[1],x,0]].v:=x;
      a[1,tr[b[1],x,1]-tr[b[1],x,0]].inx:=x;
      a[1,tr[b[1],x,1]-tr[b[1],x,0]].s:=true;
      a[1,tr[b[1],x,1]-tr[b[1],x,0]].k:=tr[b[1],x,1]+tr[b[1],x,0];
   end;

   for i:=2 to n do
   begin
      for j:=-k to k do
      if a[i-1,j].k<=k then
      begin
         value:=a[i-1,j].v;
         br:=a[i-1,j].k;
         cr:=b[i];
         sg:=s[i];
         {negative}
         for x:=0 to 9 do
         if sg then
         begin
            if tr[cr,x,0]+tr[cr,x,1]+br+2 <=k then
            if a[i,j+tr[cr,x,1]-tr[cr,x,0]-2].v<value-x then
            begin
               a[i,j+tr[cr,x,1]-tr[cr,x,0]-2].v:=value-x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]-2].inx:=x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]-2].s:=false;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]-2].k:=tr[cr,x,0]+tr[cr,x,1]+br+2;
            end;
         end
         else
         begin
            if tr[cr,x,0]+tr[cr,x,1]+br<=k then
            if a[i,j+tr[cr,x,1]-tr[cr,x,0]].v<value-x then
            begin
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].v:=value-x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].inx:=x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].s:=false;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].k:=tr[cr,x,0]+tr[cr,x,1]+br;
            end;
         end;
         {pozitive}
         for x:=0 to 9 do
         if  not sg then
         begin
            if tr[cr,x,1]+tr[cr,x,0]+br+2<=k then
            if a[i,j+tr[cr,x,1]-tr[cr,x,0]+2].v<value+x then
            begin
               a[i,j+tr[cr,x,1]-tr[cr,x,0]+2].v:=value+x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]+2].inx:=x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]+2].s:=true;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]+2].k:=tr[cr,x,1]+tr[cr,x,0]+br+2;
            end;
         end
         else
         begin
            if tr[cr,x,1]+tr[cr,x,0]+br<=k then
            if a[i,j+tr[cr,x,1]-tr[cr,x,0]].v<value+x then
            begin
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].v:=value+x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].inx:=x;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].s:=true;
               a[i,j+tr[cr,x,1]-tr[cr,x,0]].k:=tr[cr,x,1]+tr[cr,x,0]+br;
            end;
         end;
      end;
   end;
   writeln(a[n,0].v);
end;
procedure takeans;
begin
   j:=0;
   for i:=n downto 1 do
   begin
      ansp[i]:=a[i,j].inx;
      cr:=ansp[i];
      anss[i]:=a[i,j].s;
      if s[i] then
      begin
         if a[i,j].s then j:=j+tr[b[i],cr,0]-tr[b[i],cr,1]
         else j:=j+tr[b[i],cr,0]-tr[b[i],cr,1]+2;
      end
      else
      begin
         if a[i,j].s then j:=j+tr[b[i],cr,0]-tr[b[i],cr,1]-2
                     else j:=j+tr[b[i],cr,0]-tr[b[i],cr,1];
      end;
   end;
end;
procedure out;
begin
   for i:=1 to 5 do
    for j:=1 to 3 do
    t[i,j]:=c[ansp[1],i,j];
    j1:=3;
   for h:=2 to n do
   begin
      for i:=1 to 5 do
       for j:=1 to 3 do
       if anss[h] then
       t[i,j1+j]:=plus[i,j]
       else
       t[i,j1+j]:=minus[i,j];
      j1:=j1+3;
      for i:=1 to 5 do
       for j:=1 to 3 do
       t[i,j1+j]:=c[ansp[h],i,j];
       j1:=j1+3;
   end;
   for i:=1 to 5 do
   begin
    for j:=1 to (2*n-1)*3 do
    write(t[i,j]);
    writeln;
   end;
end;
begin
   init;
   prepro;
   getexp;
   transf;
   predp;
   dp;
   takeans;
   out;
end.
