III Olimpiada Informatyczna 1995/96

Zadanie: WYR
Autor: Wojciech Rytter
Wyrównywanie słów

Zawody III stopnia  
Plik źródłowy: WYR.??? (np. pas, c, cpp)
Plik wykonywalny: WYR.exe
Plik wejściowy: WYR.in
Plik wyjściowy: WYR.out

 

Dane są dwa słowa x i y oraz skończony ciąg słów (w1, w2, ... , wk).

Operacja w * wi polega na połączeniu (konkatenacji) słowa w ze słowem wi (1 <= i <= k), czyli - mówiąc inaczej - na dopisaniu do słowa w, z prawej jego strony, słowa wi.

Chcemy sprawdzić, czy słowa x i y można wyrównać za pomocą słów z danego ciągu. To znaczy, czy można po wykonaniu skończonej liczby operacji dopisywania do słów x i y odpowiednio wybranych wyrazów danego ciągu, otrzymać w obu przypadkach to samo słowo.

Przykład
Słowa abba oraz ab można wyrównać za pomocą wyrazów ciągu: baaabad aa badccaa cc. Wystarczy w tym celu do słowa abba dopisać: aa oraz badccaa, zaś do słowa ab - najpierw baaabad, potem cc, a następnie aa. W obu przypadkach otrzymamy to samo słowo: abbaaabadccaa.

Zadanie

Napisz program, który:

Wejście

Wyjście

W pliku WYR.OUT należy zapisać:

Przykłady

Dla pliku WYR.IN:
4
4 abba
2 ab
7 baaabad
2 aa
7 badccaa
2 cc

w pliku WYR.OUT należy zapisać jedna liczbę:
5

Dla pliku WYR.IN:
4
1 a
2 ab
2 bb
2 ab
2 ba
2 aa

w pliku WYR.OUT należy zapisać słowo:
NIE

Twój program powinien szukać pliku WYR.IN w katalogu bieżącym i tworzyć plik WYR.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę WYR.???, gdzie zamiast ??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka programowania. Ten sam program w postaci wykonalnej powinien być zapisany w pliku WYR.EXE.