function ZsList(mStr: string): string;
procedure pZsList(mLeft, mRight: string);
var
I, L: Integer;
Temp: string;
begin
L := Length(mLeft);
if mLeft = '' then Writeln(mRight);
for I := 1 to L do begin
Temp := mLeft;
Delete(Temp, I, 1);
pZsList(Temp, Concat(mRight, mLeft[I]));
end;
end;
begin
pZsList(mStr, '');
end;