program ideone;
{$MODE OBJFPC}
type
TCharset = set of AnsiChar;
procedure Anagram(const ACharset: TCharset; const AValue: String = '');
var
LChar: AnsiChar;
begin
if ACharset = [] then
WriteLn(AValue)
else
for LChar in ACharset do
Anagram(ACharset - [LChar], AValue + LChar);
end;
procedure PrintAnagrams(const AValue: String);
var
LCharset: TCharset = [];
LChar: AnsiChar;
begin
for LChar in AValue do
LCharset += [LChar];
Anagram(LCharset);
end;
begin
PrintAnagrams('kura');
end.
cHJvZ3JhbSBpZGVvbmU7Cgp7JE1PREUgT0JKRlBDfQoKdHlwZQogIFRDaGFyc2V0ID0gc2V0IG9mIEFuc2lDaGFyOwoKICBwcm9jZWR1cmUgQW5hZ3JhbShjb25zdCBBQ2hhcnNldDogVENoYXJzZXQ7IGNvbnN0IEFWYWx1ZTogU3RyaW5nID0gJycpOwogIHZhcgogICAgTENoYXI6IEFuc2lDaGFyOwogIGJlZ2luCiAgICBpZiBBQ2hhcnNldCA9IFtdIHRoZW4KICAgICAgV3JpdGVMbihBVmFsdWUpCiAgICBlbHNlCiAgICAgIGZvciBMQ2hhciBpbiBBQ2hhcnNldCBkbwogICAgICAgIEFuYWdyYW0oQUNoYXJzZXQgLSBbTENoYXJdLCBBVmFsdWUgKyBMQ2hhcik7CiAgZW5kOwoKICBwcm9jZWR1cmUgUHJpbnRBbmFncmFtcyhjb25zdCBBVmFsdWU6IFN0cmluZyk7CiAgdmFyCiAgICBMQ2hhcnNldDogVENoYXJzZXQgPSBbXTsKICAgIExDaGFyOiBBbnNpQ2hhcjsKICBiZWdpbgogICAgZm9yIExDaGFyIGluIEFWYWx1ZSBkbwogICAgICBMQ2hhcnNldCArPSBbTENoYXJdOwogICAgICAKICAgIEFuYWdyYW0oTENoYXJzZXQpOwogIGVuZDsKICAKYmVnaW4KICBQcmludEFuYWdyYW1zKCdrdXJhJyk7CmVuZC4=