B. ДНК - классификатор
Ограничение времени 3 секунды
Ограничение памяти 256Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В лабораторию к дядюшке Юлиусу зашла его племянница Галя. Гале очень нравилась математика, но биологией она абсолютно не интересовалась. Дядюшка Юлиус отправился за очередной кружкой кофе, а Галя, заскучав, обратила внимание на список из N фрагментов ДНК очередного гибрида динозавра с лягушкой. Все фрагменты состояли из латинских заглавных букв `A', `T', `C', `G' (аденин, тимин, цитозин, гуанин). Поскольку Гале эти буквы ни о чем не говорили, она начала классифицировать фрагменты. Два фрагмента она назвала эквивалентными, если из первого можно получить второй перестановкой букв. Множества всех эквивалентных между собой фрагментов она собирала в подмножества, которые назвала классами эквивалентности.
Когда вернулся дядюшка Юлиус, она предоставила ему результат своих трудов, а именно найденное количество классов эквивалентности, а также состав каждого класса.
Ваша задача: проделать ровно ту же работу, что и Галя. Вперед!
Формат ввода
В первой строке дано число N - количество имеющихся фрагментов ДНК (1 ? N ? 105).
В следующих n строках находятся сами фрагменты - слова, состоящие из латинских заглавных букв `A', `T', `C', `G', по одному слову в каждой строке.
Суммарная длина всех фрагментов не превосходит 5 ? 106.
Формат вывода
В первой строке вывести q - количество классов эквивалентности.
В следующих q строках вывести через пробел фрагменты, входящие в состав класса.
Классы, как и фрагменты внутри, можно выводить в любом порядке.
Пример 1
Ввод Вывод
5
AATT
TTAA
TATA
TTTAA
TTTA
3
TTTA
AATT TTAA TATA
TTTAA
Пример 2
Ввод Вывод
4
ATCG
GCTA
GGCTA
GCTAG
2
ATCG GCTA
GGCTA GCTAG
Пример 3
Ввод Вывод
6
AG
ATC
AC
C
GT
ACT
5
GT
C
AG
AC
ATC ACT