// ungolfed version of C (83) by tails // http://golf.shinh.org/reveal.rb?Sort+Suffixes/tails_1561732076&c void f(char* lower, char* upper, char* p){ if(!*p) return; if(strcmp(lower,p)<=0 && strcmp(p,upper)<0){ f(lower,p,p+1); puts(p); f(p,upper,p+1); } else { f(lower,upper,p+1); } } main(){ char buf[256]; gets(buf); f("","~",buf); }