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.
In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.