program dosadan;

var
   n, i, x : integer;
   prazan, ispis, z, j, k : char;
   sif : array[1 .. 1000] of string[2];
   pretv : array['a' .. 'z'] of string[8];
   znam : array['0' .. '9'] of string[8];
   pot2 : array[0 .. 7] of integer;

function sifriraj (z1, z2 : char) : char;
var
   s : string[8]; i, d : integer;
begin
   s := '';
   for i := 1 to 8 do
      if pretv[z1][i]=znam[z2][i] then
         s := s+'0'
      else
         s := s+'1';
   d := 0;
   for i := 1 to 8 do
      if s[i]='1' then d := d+pot2[8-i];
   sifriraj := chr (d);
end;

function znak (i : integer) : char;
var
   d, k : integer;
begin
   d := ord (sif[i][2])-ord ('0')+1;
   d := d+16*(ord (sif[i][1])-ord ('0')+1);
   znak := chr (d);
end;

begin
   pot2[0] := 1;
   for i := 1 to 7 do
      pot2[i] := pot2[i-1]*2;
   for z := 'a' to 'z' do begin
      x := ord (z);
      repeat
         case x mod 2 of
            0 : pretv[z] := pretv[z]+'0';
            1 : pretv[z] := pretv[z]+'1'
         end;
         x := x div 2;
      until x=0;
   end;
   for z := '0' to '9' do begin
      x := ord (z);
      repeat
         case x mod 2 of
            0 : znam[z] := znam[z]+'0';
            1 : znam[z] := znam[z]+'1'
         end;
         x := x div 2;
      until x=0;
   end;
   readln (n);
   read (sif[1]);
   for i := 2 to n do
      read (prazan, sif[i]);
   readln;
   for i := 1 to n do begin
      z := znak (i); ispis := '.';
      for j := 'a' to 'z' do
         for k := '0' to '9' do
            if sifriraj (j, k)=z then
               ispis := '-';
      write (ispis);
   end;
   writeln;
end.
