program ideone;
Uses sysutils;
const
  Samples: array [0 .. 9] of AnsiString = ('zero', 'one', 'two', 'three',
    'four', 'five', 'six', 'seven', 'eight', 'nine');
var
  BigCount, SamCount: array [Ord('a') .. Ord('z')] of Integer;
  Big, OutS: AnsiString;
  i, j, k, n, r: Integer;
  Res: Boolean;
  ch: AnsiChar;
begin
 Randomize;
 for r := 1 to 4 do begin
  n := 2 + random(9);
  Big := '';
  OutS := '';
  for i := 0 to n - 1 do
    Big := Big + Samples[Random(10)];
  Writeln(Big);
  //Pascal strings numbered from 1
  for i := Length(Big) downto 2 do begin   //shuffle chars
       j := 1 + random(i);
       ch := Big[i];
       Big[i] := Big[j];
       Big[j] := ch;
  end;
    Writeln(Big);
 
  FillChar(BigCount, SizeOf(BigCount), 0); //string char counts
  for i := 1 to Length(Big) do
    Inc(BigCount[Ord(Big[i])]);
 
  for k := 0 to 4 do begin   //even numbers
    j := 2 * k;
    FillChar(SamCount, SizeOf(SamCount), 0); //sample[j] char counts
    for i := 1 to Length(Samples[j]) do
      Inc(SamCount[Ord(Samples[j][i])]);
    Res := True;
    while Res do begin
      for i := Ord('a') to Ord('z') do
        if SamCount[i] > BigCount[i] then begin
          Res := False;
          Break;
        end;
      if Res then begin //word found, just add index
        OutS := OutS + IntToStr(j);
        for i := Ord('a') to Ord('z') do
          BigCount[i] := BigCount[i] - SamCount[i];
      end;
    end;
  end;
 
  for k := 0 to 4 do begin    //odd numbers
    j := 2 * k + 1;
    FillChar(SamCount, SizeOf(SamCount), 0);
    for i := 1 to Length(Samples[j]) do
      Inc(SamCount[Ord(Samples[j][i])]);
    Res := True;
    while Res do begin
      for i := Ord('a') to Ord('z') do
        if SamCount[i] > BigCount[i] then begin
          Res := False;
          Break;
        end;
      if Res then begin  //word found, insert index in the right place in sorted order
        n := Length(OutS);
        ch := AnsiChar(j + Ord('0'));
        while (n > 0) and (ch < OutS[n]) do
          Dec(n);
        Insert(ch, OutS, n + 1);
        for i := Ord('a') to Ord('z') do
          BigCount[i] := BigCount[i] - SamCount[i];
      end;
    end;
  end;
  Writeln(OutS);
 end; 
end.
				cHJvZ3JhbSBpZGVvbmU7ClVzZXMgc3lzdXRpbHM7CmNvbnN0CiAgU2FtcGxlczogYXJyYXkgWzAgLi4gOV0gb2YgQW5zaVN0cmluZyA9ICgnemVybycsICdvbmUnLCAndHdvJywgJ3RocmVlJywKICAgICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnKTsKdmFyCiAgQmlnQ291bnQsIFNhbUNvdW50OiBhcnJheSBbT3JkKCdhJykgLi4gT3JkKCd6JyldIG9mIEludGVnZXI7CiAgQmlnLCBPdXRTOiBBbnNpU3RyaW5nOwogIGksIGosIGssIG4sIHI6IEludGVnZXI7CiAgUmVzOiBCb29sZWFuOwogIGNoOiBBbnNpQ2hhcjsKYmVnaW4KIFJhbmRvbWl6ZTsKIGZvciByIDo9IDEgdG8gNCBkbyBiZWdpbgogIG4gOj0gMiArIHJhbmRvbSg5KTsKICBCaWcgOj0gJyc7CiAgT3V0UyA6PSAnJzsKICBmb3IgaSA6PSAwIHRvIG4gLSAxIGRvCiAgICBCaWcgOj0gQmlnICsgU2FtcGxlc1tSYW5kb20oMTApXTsKICBXcml0ZWxuKEJpZyk7CiAgLy9QYXNjYWwgc3RyaW5ncyBudW1iZXJlZCBmcm9tIDEKICBmb3IgaSA6PSBMZW5ndGgoQmlnKSBkb3dudG8gMiBkbyBiZWdpbiAgIC8vc2h1ZmZsZSBjaGFycwogICAgICAgaiA6PSAxICsgcmFuZG9tKGkpOwogICAgICAgY2ggOj0gQmlnW2ldOwogICAgICAgQmlnW2ldIDo9IEJpZ1tqXTsKICAgICAgIEJpZ1tqXSA6PSBjaDsKICBlbmQ7CiAgICBXcml0ZWxuKEJpZyk7CgogIEZpbGxDaGFyKEJpZ0NvdW50LCBTaXplT2YoQmlnQ291bnQpLCAwKTsgLy9zdHJpbmcgY2hhciBjb3VudHMKICBmb3IgaSA6PSAxIHRvIExlbmd0aChCaWcpIGRvCiAgICBJbmMoQmlnQ291bnRbT3JkKEJpZ1tpXSldKTsKCiAgZm9yIGsgOj0gMCB0byA0IGRvIGJlZ2luICAgLy9ldmVuIG51bWJlcnMKICAgIGogOj0gMiAqIGs7CiAgICBGaWxsQ2hhcihTYW1Db3VudCwgU2l6ZU9mKFNhbUNvdW50KSwgMCk7IC8vc2FtcGxlW2pdIGNoYXIgY291bnRzCiAgICBmb3IgaSA6PSAxIHRvIExlbmd0aChTYW1wbGVzW2pdKSBkbwogICAgICBJbmMoU2FtQ291bnRbT3JkKFNhbXBsZXNbal1baV0pXSk7CiAgICBSZXMgOj0gVHJ1ZTsKICAgIHdoaWxlIFJlcyBkbyBiZWdpbgogICAgICBmb3IgaSA6PSBPcmQoJ2EnKSB0byBPcmQoJ3onKSBkbwogICAgICAgIGlmIFNhbUNvdW50W2ldID4gQmlnQ291bnRbaV0gdGhlbiBiZWdpbgogICAgICAgICAgUmVzIDo9IEZhbHNlOwogICAgICAgICAgQnJlYWs7CiAgICAgICAgZW5kOwogICAgICBpZiBSZXMgdGhlbiBiZWdpbiAvL3dvcmQgZm91bmQsIGp1c3QgYWRkIGluZGV4CiAgICAgICAgT3V0UyA6PSBPdXRTICsgSW50VG9TdHIoaik7CiAgICAgICAgZm9yIGkgOj0gT3JkKCdhJykgdG8gT3JkKCd6JykgZG8KICAgICAgICAgIEJpZ0NvdW50W2ldIDo9IEJpZ0NvdW50W2ldIC0gU2FtQ291bnRbaV07CiAgICAgIGVuZDsKICAgIGVuZDsKICBlbmQ7CgogIGZvciBrIDo9IDAgdG8gNCBkbyBiZWdpbiAgICAvL29kZCBudW1iZXJzCiAgICBqIDo9IDIgKiBrICsgMTsKICAgIEZpbGxDaGFyKFNhbUNvdW50LCBTaXplT2YoU2FtQ291bnQpLCAwKTsKICAgIGZvciBpIDo9IDEgdG8gTGVuZ3RoKFNhbXBsZXNbal0pIGRvCiAgICAgIEluYyhTYW1Db3VudFtPcmQoU2FtcGxlc1tqXVtpXSldKTsKICAgIFJlcyA6PSBUcnVlOwogICAgd2hpbGUgUmVzIGRvIGJlZ2luCiAgICAgIGZvciBpIDo9IE9yZCgnYScpIHRvIE9yZCgneicpIGRvCiAgICAgICAgaWYgU2FtQ291bnRbaV0gPiBCaWdDb3VudFtpXSB0aGVuIGJlZ2luCiAgICAgICAgICBSZXMgOj0gRmFsc2U7CiAgICAgICAgICBCcmVhazsKICAgICAgICBlbmQ7CiAgICAgIGlmIFJlcyB0aGVuIGJlZ2luICAvL3dvcmQgZm91bmQsIGluc2VydCBpbmRleCBpbiB0aGUgcmlnaHQgcGxhY2UgaW4gc29ydGVkIG9yZGVyCiAgICAgICAgbiA6PSBMZW5ndGgoT3V0Uyk7CiAgICAgICAgY2ggOj0gQW5zaUNoYXIoaiArIE9yZCgnMCcpKTsKICAgICAgICB3aGlsZSAobiA+IDApIGFuZCAoY2ggPCBPdXRTW25dKSBkbwogICAgICAgICAgRGVjKG4pOwogICAgICAgIEluc2VydChjaCwgT3V0UywgbiArIDEpOwogICAgICAgIGZvciBpIDo9IE9yZCgnYScpIHRvIE9yZCgneicpIGRvCiAgICAgICAgICBCaWdDb3VudFtpXSA6PSBCaWdDb3VudFtpXSAtIFNhbUNvdW50W2ldOwogICAgICBlbmQ7CiAgICBlbmQ7CiAgZW5kOwogIFdyaXRlbG4oT3V0Uyk7CiBlbmQ7IAplbmQu