Każdy niepusty ciąg, którego elementami są małe litery
i
, a także ciąg pusty nazywamy ab-słowem.
Jeżeli
jest ab-słowem, a
takimi dowolnymi liczbami całkowitymi,
że
, to przez
będziemy oznaczali podsłowo
składające się z kolejnych liter
.
Powiemy, że ab-słowo
jest ładnie zbudowane, jeżeli zawiera tyle samo liter
, co
i dla każdego
podsłowo
zawiera co najmniej tyle samo liter
, co liter
.
Podamy teraz indukcyjną definicję podobieństwa ładnie zbudowanych ab-słów:
i
są podobne,
jeżeli są tej samej długości (
) i jest spełniony jeden z następujacych warunków:
,
oraz
i
są ładnie zbudowanymi, podobnymi ab-słowami,
,
, takie, że słowa
,
są ładnie zbudowanymi ab-słowami i
,
są ładnie zbudowanymi ab-słowami i
jest podobne do
oraz
jest podobne do
lub
,
są ładnie zbudowanymi ab-słowami i
jest podobne do
oraz
jest podobne do
.
Stopniem zróżnicowania niepustego zbioru
ładnie zbudowanych ab-słów nazywamy największą liczbę ab-słów,
które można wybrać z
tak, żeby żadne dwa wybrane słowa nie były do siebie podobne.
Napisz program, który
;
;
Na standardowym wejściu znajdą się:
elementów zbioru
,
;
wierszach elementy zbioru
tj. ładnie zbudowane ab-słowa,
po jednym w każdym wierszu; pierwsza litera każdego ab-słowa jest pierwszym symbolem w wierszu i między kolejnymi literami
w słowie nie ma żadnych innych znaków; każde ab-słowo ma długość co najmniej
, a co najwyżej
.
W pierwszym i jedynym wierszu standardowego wyjścia należy zapisać jedną liczbę całkowitą — stopień zróżnicowania
.
Dla danych wejściowych:
3 aabaabbbab abababaabb abaaabbabb
poprawną odpowiedzią jest:
2
Autor zadania: Krzysztof Diks.
W razie problemów technicznych ze Szkopułem, prosimy o kontakt mailowy pod adresem szkopul@fri.edu.pl.
Jeśli chciałbyś porozmawiać o zadaniach, rozwiązaniach lub problemach technicznych, odwiedź nasze serwery na Discordzie. Są one moderowane przez społeczność, ale członkowie zespołu wsparcia również aktywnie się tam udzielają.