Пользователи заходят в приложение, вводя свой почтовый адрес. Мы получили логи с нескольких приложений и хотим посчитать количество уникальных пользователей, заходивших в них.
Почтовые адреса состоят из маленьких латинских букв, точек (.), дефисов (-) и одной «собаки» (@). Часть до «собаки» назовем логином, после «собаки» - доменом.
Пользователь может добавлять сколько угодно точек в свой логин, они игнорируются, вход при этом все равно будет успешным. Также пользователь может добавить дефис в свой логин, тогда часть логина после дефиса и сам дефис игнорируются. Например stalker@yandex.ru и s.t.a.l.k.e.r.@yandex.ru считаются одним пользователем, super-user@yandex.ru и sup.er@yandex.ru тоже считаются одним пользователем.
Эти правила не применяются к домену. Два пользователя с одинаковым логином, но разными доменами считаются разными. Назовем окончанием домена подстроку после последней точки. Тогда два домена, отличающиеся только окончаниями, считаются одинаковыми. Например super@mail.yandex.ru и super@mail.yandex.com - один пользователь, super@yandex.com и super@yandex.co.uk - разные пользователи.
При решении на языке Dart используйте ввод и вывод через файлы, стандартный поток ввода работает слишком медленно.
В первой строке входных данных находится одно число
В последующих
Гарантируется, что каждый адрес содержит символ @, а каждый домен содержит хотя бы точку. Логин может быть пустым.
Выведите одно число - количество уникальных пользователей.
Input:
2
s.t.a.l.k.e.r.@yandex.ru
stalker-winner@yandex.com
Output:
1
Input:
2
user@yandex.ru
user@ya.ru
Output:
2
Input:
4
s.t.a.l.k.e.r.@yandex.ru
stalker-winner@yandex.com
user@yandex.ru
user@mail.yandex.ru
Output:
3
Tags: implementation, parsing, strings, std