#include <bits/stdc++.h>
using namespace std;
// generate permutation of {a[st], a[st+1], ..., a[ed]}
void P(char a[], int st, int ed) {
if (st > ed) { puts(a); return; } // nothing to generate
for (int i=st; i<=ed; ++i) {
swap(a[st], a[i]); // enumerate first element
P(a, st+1, ed);
swap(a[st], a[i]); // recover
}
}
int main() {
char s[] = "abcde";
P(s, 0, (int)strlen(s)-1);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBnZW5lcmF0ZSBwZXJtdXRhdGlvbiBvZiB7YVtzdF0sIGFbc3QrMV0sIC4uLiwgYVtlZF19CnZvaWQgUChjaGFyIGFbXSwgaW50IHN0LCBpbnQgZWQpIHsKICAgIGlmIChzdCA+IGVkKSB7IHB1dHMoYSk7IHJldHVybjsgfSAvLyBub3RoaW5nIHRvIGdlbmVyYXRlCiAgICBmb3IgKGludCBpPXN0OyBpPD1lZDsgKytpKSB7CiAgICAgICAgc3dhcChhW3N0XSwgYVtpXSk7ICAgICAgICAgICAgLy8gZW51bWVyYXRlIGZpcnN0IGVsZW1lbnQKICAgICAgICBQKGEsIHN0KzEsIGVkKTsKICAgICAgICBzd2FwKGFbc3RdLCBhW2ldKTsgICAgICAgICAgICAvLyByZWNvdmVyCiAgICB9Cn0KCmludCBtYWluKCkgewogICAgY2hhciBzW10gPSAiYWJjZGUiOwogICAgUChzLCAwLCAoaW50KXN0cmxlbihzKS0xKTsKICAgIHJldHVybiAwOwp9