program wordperm; uses crt; label prase; const max=64;{maximalni delka slova} var F: text; a: char;{nemuselo by to tu ani byt myslim} b: array [0..max] of char;{sem ukladam slova} c: array [0..max] of char;{sem referencni slovo} d: array [0..max] of char;{sem ulozim aktualni slovo} e: array [0..max] of char; i,j:integer;{holky sikovny} Procedure IsPerm(x,y,edge:integer); var pom:integer; begin if x=y then begin if (x=0) then {vsechna pismena byla obsazena, nasleduje vypis slova} begin for pom:=1 to edge do begin write(d[pom]); e[pom]:=c[pom]; end; writeln; end else for pom:=x downto 1 do {} begin if e[pom]=b[x] then begin e[pom]:=e[x]; d[x]:=b[x]; IsPerm((x-1),(y-1),edge); end; end; end; end; {------------ZACATEK TELA PROGRAMU----------} begin {$I-} Assign(F, 'c:\temp\test.txt'); Reset(F); {$I+} while (not eof(F)) and (a=' ') do read(F,a); j:=0; {nacteni prvniho slova} while not( eof(F)) do begin read (F,a); if (a<>' ') then begin j:=j+1; c[j]:=a; e[j]:=c[j]; { write(c[j]);} end else break end; i:=0; while not (eof(F)) do begin read(F,a); {cteme pokud se nactene cislo nerovna mezere} if (a<>' ') then begin i:=i+1; b[i]:=a; { write(b[i]);} end else begin IsPerm(j,i,j); i:=0; end; end; IsPerm(j,i,j); close(F); readln; end.