Бінарне дерево#7223

Бінарне дерево

1 секунда
64 мегабайти
Легка

Бінарне дерево — це структура даних, де кожен вузол має не більше двох нащадків: лівого та правого. Вузол, що має нащадків, називається їхнім батьком.

Рядок інструкцій складається з літер , і . означає Лівий, — Правий, а — Верх. Їх значення пояснено нижче.

Уявімо нескінченно велике бінарне дерево, де кожен вузол має рівно двох нащадків (лівого і правого), і кожен вузол має батька. У цій задачі вважатимемо, що батьком кореня є сам корінь. Я починаю з кореня і слідую інструкціям з рядка . Якщо перший символ дорівнює , я рухаюся до лівого нащадка; якщо — до правого; якщо — до батька. Якщо в корені приходить команда , залишаюся в корені, оскільки його батьком є він сам.

Тепер розглянемо інший рядок інструкцій . Починаючи з вузла, де я зупинився після виконання інструкцій , я виконую команди з . Однак тепер я можу пропустити будь-яку кількість інструкцій з (або навіть усі). Потрібно визначити, у скільки різних вузлів можна потрапити, виконуючи команди з (і пропускаючи їх у будь-якому порядку).

Наприклад:

Нехай S = L і T = LU. Відповідь дорівнює . Після виконання я зупиняюся в лівому нащадку кореня. Інструкції з можна виконати способами:

  1. Пропустити всі літери: залишаюся в тій же вершині.

  2. Пропустити і виконати : повертаюся до кореня.

  3. Виконати і пропустити : переходжу до лівого нащадка поточної вершини.

  4. Виконати і : залишаюся в тій же вершині, як у випадку .

Оскільки можна потрапити в різні вузли після виконання , відповідь дорівнює .

Вхідні дані

Перша строка містить кількість тестів (n \leq 15). Кожен тест складається з двох непорожніх рядків. Перша строка містить набір інструкцій , а друга — набір інструкцій . Рядки містять лише літери , або . Довжина рядків не перевищує .

Вихідні дані

Для кожного тесту виведіть його номер і кількість досяжних вузлів. Оскільки відповідь може бути великою, виведіть її за модулем .

Приклади

Приклад 1

Loading
Loading