Se considera o listă având un număr cunoscut de cuvinte. Din această listă s-au ales două cuvinte oarecare. Se dorește transformarea primului cuvânt în cel de-al doilea, trecând prin cuvinte intermediare, existente în lista dată. Trecerea dintr-un cuvânt în altul se poate face folosind urmatoarele operații: schimbarea, adaugarea sau ștergerea unui singur caracter.
Cerință
Dându-se o listă de cuvinte și două cuvinte din aceasta, găsiți cea mai scurtă secvență de operații care transformă primul cuvânt în cel de-al doilea folosind operațiile permise.
Date de intrare
Fișier de intrare: cuvinte.in
Linia : , , , trei numere naturale nenule, reprezentând numărul cuvintelor din lista (), poziția primului cuvânt în listă (), respectiv poziția celui de-al doilea cuvânt în listă ();
Liniile : , aceste linii conțin fiecare câte un cuvânt, apartinând listei.
Date de ieșire
Fișier de ieșire: cuvinte.out
Linia : , numar natural, reprezentând numărul minim de pași necesari pentru a ajunge de la primul cuvânt la al doilea;
Liniile : , pe aceste linii apar în ordine cuvintele dintr-o secvență ce respectă cerinta problemei (câte un cuvânt pe linie), inclusiv primul cuvânt al secventei.
Restricții și precizări
- numarul maxim de caractere dintr-un cuvânt este
- daca nu există soluție, în fișierul de ieșire se va scrie cifra (zero)
- dacă sunt mai multe secvențe de lungime minimă, în fișier se va scrie una singură
- Testele nu sunt aceleași precum cele din concurs (nu le-am găsit)
Exemplul 1
cuvinte.in
7 1 5
car
cer
cerc
mar
mare
rosu
inrosit
cuvinte.out
2
car
mar
mare
Exemplul 2
cuvinte.in
7 1 6
car
cer
cerc
mar
mare
rosu
inrosit
cuvinte.out
0