H. HTML
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Разметка HTML содержит ноль или более вложенных элементов и текст (в рамках условия дана упрощенная версия реального HTML, и он всегда корректен):


1. <html>
2. <input type="button" id="x" />
3. <div id="x"class='cls'p="<i/>">
4. hello <b>world</b> id='x'
5. </div>
6. </html>

HTML-код может содержать символы английского алфавита, символы "<>=/", а также кавычки ' и ". Также так называемые пробельные символы: пробелы, переводы строк и табуляцию. Все входные символы в задаче будут в нижнем регистре.

В данном примере веб-страница содержит элементы, обозначаемые тегами <html>, <input>, <div>, <b>, а также текст "hello", "world" и "id='x'" внутри элементов. Теги состоят из объявления тега и опционально, закрытия тега. Рассмотрим тег tag:

  • Объявление тега состоит из начала объявления – "<tag" и конца объявления — "/>" либо ">". Между началом и концом объявления может находиться ноль или более пробельных символов, а также атрибуты тега (см. ниже).
  • Если тег содержит внутри себя другие теги или текст длиной ноль или более символов (как <html>, <b> или <div> из примера), то конец объявления тега — это ">". Такой тег называют открытым. Если не содержит (как тег "<input>" из примера), то конец объявления тега - это "/>", и такой тег называют замкнутым.
  • Открытый тег всегда закрывается как "</tag>" — как на строчках 4, 5, 6. Замкнутые теги не закрываются.
  • между началом и концом объявления тега могут находиться атрибуты. Каждый атрибут имеет значение. Например, "<input>" имеет два атрибута — "type" со значением "button" и "id" со значением "x". Атрибуты записываются как "attr="val"" или "attr='val'" — закрывает значение та же кавычка, что и открывает. Название атрибута и его значение разделяется только символом '=' без пробелов. Название атрибута — один или более символов английского алфавита в нижнем регистре. На значения атрибутов накладывается единственное ограничение - они не могут содержать открывающую/закрывающую кавычку значения атрибута. Между атрибутами, а также атрибутами и началом объявления тега, атрибутами и концом объявления тега может быть ноль или более пробельных символов.

Вам нужно написать программу, которая по заданному HTML-коду и трем типам селекторов выдаст количество элементов на странице, соответствующих селекторам:

  • "html" — возвращает все элементы <html> со страницы.
  • "#myid" — возвращает все теги, где имеется атрибут id со значением myid.
  • ".cls" — возвращает все теги, где имеется атрибут "class" со значением "cls".
Входные данные

Первая строка содержит число n - количество селекторов (как минимум один). Далее следуют n строк без пробелов в начале и конце, которые обозначают селекторы s1, ..., sn, по которым Вам нужно сделать запросы. Селекторы содержат один или более символов английского алфавита и/или символы ".#'. Далее до конца входа находится непустой HTML-код. Общая длина входных данных не превышает 5 000 символов. Все символы во входе находятся в нижнем регистре.

Выходные данные

Для каждого запроса s1, ..., sn напечатайте ответ на отдельной строке, содержащий селектор и количество элементов HTML-страницы, ему соответствующих. См. пример выходных данных.

Пример
Входные данные
5
html
#x
.cls
#fakeid
i
<html>
<input type="button" id="x" />
<div id="x"class='cls'p="<i/>">
hello <b>world</b> id='x'
</div>
</html>
Выходные данные
Selector "html": found 1 elements
Selector "#x": found 2 elements
Selector ".cls": found 1 elements
Selector "#fakeid": found 0 elements
Selector "i": found 0 elements
Примечание

Обратите внимание, что в качестве примера входных данных используется HTML-страница из условия.