{
TASK: EXPRES
LANG: PASCAL
}

{$R-}

type el = record
           ed, pr : integer;
          end;

type el2 = record
            ed, pr : integer;
            si : byte;
           end;


var num : array[0..11] of string[15];
    b : array[0..11, 0..11] of el;
    a : array[0..45, 0..100, -100..100] of longint;
    ll, used : array[0..45, 0..100, -100..100] of byte;
    from : array[0..45, 0..100, -100..100] of el2;
    w3, w1, w2, kk, max, sum, pr, ed, fl, i, j, k, l, o, p, m, n : longint;
    s, s1, s2, answer, answers, ans : string;
    ch : char;



procedure preprocessing;
 begin
  num[0] := '111101101101111';
  num[1] := '001001001001001';
  num[2] := '111001111100111';
  num[3] := '111001111001111';
  num[4] := '101101111001001';
  num[5] := '111100111001111';
  num[6] := '111100111101111';
  num[7] := '111001001001001';
  num[8] := '111101111101111';
  num[9] := '111101111001111';
  num[10] := '000010111010000';
  num[11] := '000000111000000';
 end;

procedure preprocessing2;
var br1, br2, i, j, k, l, br : longint;
 begin
  for i := 0 to 9 do
    for j := 0 to 9 do
      begin
       br := 0;
       br1 := 0;
       br2 := 0;
       for l := 1 to 15 do
         begin
          if num[i][l] = '1' then inc(br1);
          if num[j][l] = '1' then inc(br2);
          if (num[i][l] <> num[j][l]) then inc(br);
         end;
       b[i, j].pr := br;
       b[i, j].ed := br2 - br1;
      end;
 end;


procedure input;
var s1 : string;
    b : array[0..6, 0..260] of byte;
    ch : char;
 begin
  readln(n, kk);
  m := n * 3 + (n - 1) * 3;
  s1 := '';
  for i := 1 to 5 do
    begin
     for j := 1 to m do
       begin
        if j < m then read(ch)
        else readln(ch);
        if ch = '1' then b[i, j] := 1
        else b[i, j] := 0;
       end;
    end;
  for o := 1 to n + (n - 1) do
    begin
     s1 := '';
     for i := 1 to 5 do
       for j := 1 to 3 do
         begin
          if b[i, (o - 1) * 3 + j] = 1 then s1 := s1 + '1'
          else s1 := s1 + '0';
         end;
     for i := 0 to 11 do
       if s1 = num[i] then break;
     case i of
     0: s := s + '0';
     1: s := s + '1';
     2: s := s + '2';
     3: s := s + '3';
     4: s := s + '4';
     5: s := s + '5';
     6: s := s + '6';
     7: s := s + '7';
     8: s := s + '8';
     9: s := s + '9';
     10: s := s + '+';
     11: s := s + '-';
     end;
    end;

 end;




procedure main;
 begin
      for i := 0 to kk do
      for j := -kk to kk do
        if used[o - 1, i, j] = 1 then
          begin
           for l := 0 to 9 do
             begin
              pr := b[k, l].pr;
              ed := b[k, l].ed;
              pr := pr + i;
              ed := ed + j;
              sum := a[o -1 , i, j];
              if ch = '-' then sum := sum - l
              else sum := sum + l;

              if (used[o, pr, ed] = 0) or (sum > a[o, pr, ed]) then
                begin
                 used[o, pr, ed] := 1;
                 a[o, pr, ed] := sum;
                 from[o, pr, ed].pr := i;
                 from[o, pr, ed].ed := j;
                 if ch = '+' then from[o, pr, ed].si := 1
                 else from[o, pr, ed].si := 2;
                 ll[o, pr, ed] := l;

                end;
              if (o = n) and (pr <= kk) and (ed = 0) and (a[o, pr, ed] > max) then
                begin
                 w1 := pr;
                 w2 := ed;
                 w3 := l;
                 max := a[o, pr, ed];
                end;

              if ch = '-' then
                begin
                 pr := pr + 2;
                 ed := ed + 2;
                 sum := sum + 2 * l;
                end
              else if ch = '+' then
                begin
                 pr := pr + 2;
                 ed := ed - 2;
                 sum := sum - 2 * l;
                end;
              if (used[o, pr, ed] = 0) or (sum > a[o, pr, ed]) then
                begin
                 used[o, pr, ed] := 1;
                 a[o, pr, ed] := sum;
                 from[o, pr, ed].pr := i;
                 from[o, pr, ed].ed := j;
                 if ch = '+' then from[o, pr, ed].si := 2
                 else from[o, pr, ed].si := 1;
                 ll[o, pr, ed] := l;
                end;


              if (o = n) and (pr <= kk) and (ed = 0) and (a[o, pr, ed] > max) then
                begin
                 w1 := pr;
                 w2 := ed;
                 w3 := l;
                 max := a[o, pr, ed];
                end;
             end;
          end;
  end;


begin
 preprocessing;
 preprocessing2;
 input;
 max := -1000000;

 k := ord(s[1]) - 48;
 for i := 0 to 9 do
   begin
    a[1, b[k, i].pr, b[k, i].ed] := i;
    used[1, b[k, i].pr, b[k, i].ed] := 1;
    ll[1, b[k, i].pr, b[k, i].ed] := i;
    if (n = 1) and (b[k, i].pr <= kk) and (b[k, i].ed = 0) and (i > max) then
      begin
       w1 := b[k, i].pr;
       w2 := 0;
       w3 := i;
       max := i;
      end;
   end;


 s1 := s;
 delete(s1, 1, 1);
 for o := 2 to n do
   begin
    ch := s1[1];
    delete(s1, 1, 1);
    k := ord(s1[1]) - 48;
    delete(s1, 1, 1);

    main;

    end;
 writeln(max);
 answer := '';
 answers := '';
 for i := n downto 1 do
   begin
    answer := answer + chr(ll[i, w1, w2] + 48);
    if i > 1 then
      begin
       if from[i, w1, w2].si = 1 then answers := answers + '+'
       else answers := answers + '-';
      end;
    o := from[i, w1, w2].pr;
    p := from[i, w1, w2].ed;
    w1 := o;
    w2 := p;
   end;
 ans := '';
 for i := n downto 1 do
   begin
    if i > 1 then ans := ans + answer[i]
    else ans := ans + answer[i];
    if i > 1 then ans := ans + answers[i - 1];
   end;
 m := length(ans);
 for i := 1 to 5 do
 begin
 for j := 1 to m do
   begin
    case ans[j] of
    '0': k := 0;
    '1': k := 1;
    '2': k := 2;
    '3': k := 3;
    '4': k := 4;
    '5': k := 5;
    '6': k := 6;
    '7': k := 7;
    '8': k := 8;
    '9': k := 9;
    '+': k := 10;
    '-': k := 11;
    end;
    write(num[k][(i - 1) * 3 + 1], num[k][(i - 1) * 3 + 2], num[k][(i - 1) * 3 + 3]);
   end;
   writeln;
  end;




end.























