program letterkomb;

uses crt;

var letter : array [1..10] of string [1];      {Buchstaben}
    kennung : array [1..10] of string [1];     {Kennungen der Buchstaben}
    ausgabe : string;                          {Buchstabenkombination}
    eingabe : string;                          {Ausgangskombination}


{-----------------------------------------------------------------------------}
{Eingabe und Aufbereitung der Eingangskombination}
procedure enter;
var i : byte;                                   {Schleifenz„hler}

begin;
  clrscr;
  repeat;
    write ('Ausgangskombination  ->');
    readln (eingabe);
  until (length (eingabe) > 0) and (length (eingabe) < 11);

  for i:=1 to length (eingabe) do begin;
    letter [i]:=copy (eingabe,i,1);
    kennung [i]:=chr (i+32);
  end;
end;

{-----------------------------------------------------------------------------}
procedure solve (oldausgabe,oldcheck : string);
var index : byte;                               {Index des angesprochenen Buchstabens in Tabelle}
    ausgabe : string;
    check : string;

begin;
  index:=0;
  repeat;
    ausgabe:=oldausgabe;
    check:=oldcheck;
    index:=index + 1;
    if pos (kennung [index],check) = 0 then begin;
      ausgabe:=ausgabe + letter [index];
      check:=check + kennung [index];
        if length (ausgabe) < length (eingabe) then begin
        solve (ausgabe,check);
      end
      else begin
        write (ausgabe:11);
      end;
    end;
  until index = length (eingabe);
end;

{-----------------------------------------------------------------------------}
{main}
begin;
  enter;
  solve ('','');
end.
