type stroka=string;
Var k,a:integer;
procedure perest(n:integer; s:stroka);
{n-элемент, который будет вставляться в строку. На данный момент, в строке n-1 символ}
var i:integer;
st1,st:stroka;
begin
if n=k+1 then {В строке n символов, она сформирована, выводим на экран}
begin
writeln(s); exit;
end
else {В строке меньше n символов}
for i:=1 to n do {Вставляем символ n в строку на i-е место (от 1 до n)}
begin
st:=s; {Копируем строку s во вспомогательную переменную st}
str(n,st1); {Переводим цифру n в строку st1}
insert(st1,st,i); {Вставляем строку st1 в строку st}
perest(n+1,st); {Вызываем процедуру perest для следующей цифры n+1}
end;
end;
Begin {Начало основной программы}
writeln('Введите количкство букв'); readln(k);
perest(1,''); {Изначально вызываем процедуру для элемента 1, вставляем его в пустую строку}
readln;
end.
Спасибо заранее!