Reversals
TopCoder TCO2013 Round 1B
Time Limit: 0.1s, Memory Limit: 64MiB
Ели има N стринга S1, S2, ..., SN. Тя може да им прилага следната операция произволен брой пъти (включително нула):

Избира се някой от стринговете (да кажем Si) и индекс между 2 и |Si|, където с |Si| бележим дължината на стринга Si. След това символите от началото на избрания стринг до избрания индекс (включително) биват обърнати.

Например, ако Ели е избрала стринга "topcoder" и реши да обърне първите три символа, ще получи "topcoder" → "potcoder". Ако по-късно реши да избере отново този стринг и да обърне всичките му символи, ще получи "potcoder" → "redoctop".

След прилагането на няколко операции е възможно два от стринговете да станат еднакви. В момента, в който това се случи, двата стринга изчезват и момичето продължава да работи само с оставащите низове. Сега Ели се чуди какъв е максималния брой стрингове, които може да премахне?
Вход
На първия ред на стандартния вход ще бъде дадено цялото число N – броя стрингове в началото. На следващия ред разделени с шпации ще са дадени N различни стринга S1, S2, ..., SN, съдържащи само малки английски букви ('a'-'z').
Изход
На стандартния изход изведете едно цяло число – максималния брой стрингове, които Ели може да елиминира.
Ограничения
  • 1 ≤ N ≤ 50
  • 1 ≤ |Si| ≤ 50
Примерен Вход Примерен Изход
5 esprit god redoctop ocpotder dog 4
11 rats live stressed to act as star desserts of evil cat 8
В първия пример Ели може да обърне "dog" в "god". В този момент вторият и петият стринг стават еднакви и изчезват. От останалите {"esprit", "redoctop", "ocpotder"} тя може да направи промените "redoctop" → "potcoder" → "topcoder", и след това "ocpotder" → "topcoder", карайки двата стринга "topcoder" да изчезнат. Накрая момичето остава само с {"esprit"}, от който тя няма как да се отърве.
Мрън!