anagrame

Time limit: 0.5s Memory limit: 64MB Input: anagrame.in Output: anagrame.out

Se dă un cuvânt format numai din litere mici. Numim anagramă un cuvânt format din literele cuvântului dat, schimbând eventual ordinea literelor. De exemplu o anagramă a cuvântului tamara este cuvântul armata. Evident, un cuvânt poate fi considerat o anagramă a lui însuşi.

Cerință

Scrieţi un program care să genereze toate anagramele unui cuvânt dat, în ordine lexicografică.

Date de intrare

Fişierul de intrare anagrame.in conţine pe prima linie cuvântul dat.

Date de ieșire

Fişierul de ieşire anagrame.out va conţine în ordine anagramele cuvântului dat, câte una pe linie.

Restricții și precizări

  • Cuvântul dat are cel mult 1010 litere mici.
  • Cuvântul x=x1 x2xnx = x_1 \ x_2 \dots x_n precede cuvântul y=y1 y2yny = y_1 \ y_2 \dots y_n dacă există un indice k1,2,,nk \in {1, 2, \dots, n} astfel încât xi=yix_i = y_i, i1,2,,k1i \in {1, 2, \dots, k - 1}, iar litera xkx_k precede în alfabet litera yky_k.

Exemplu

anagrame.in

ana

anagrame.out

aan
ana
naa

Log in or sign up to be able to send submissions!