Бінарне дерево — це структура даних, де кожен вузол має не більше двох нащадків: лівого та правого. Вузол, що має нащадків, називається їхнім батьком.
Рядок інструкцій складається з літер , і . означає Лівий, — Правий, а — Верх. Їх значення пояснено нижче.
Уявімо нескінченно велике бінарне дерево, де кожен вузол має рівно двох нащадків (лівого і правого), і кожен вузол має батька. У цій задачі вважатимемо, що батьком кореня є сам корінь. Я починаю з кореня і слідую інструкціям з рядка . Якщо перший символ дорівнює , я рухаюся до лівого нащадка; якщо — до правого; якщо — до батька. Якщо в корені приходить команда , залишаюся в корені, оскільки його батьком є він сам.
Тепер розглянемо інший рядок інструкцій . Починаючи з вузла, де я зупинився після виконання інструкцій , я виконую команди з . Однак тепер я можу пропустити будь-яку кількість інструкцій з (або навіть усі). Потрібно визначити, у скільки різних вузлів можна потрапити, виконуючи команди з (і пропускаючи їх у будь-якому порядку).
Наприклад:
Нехай S = L і T = LU. Відповідь дорівнює . Після виконання я зупиняюся в лівому нащадку кореня. Інструкції з можна виконати способами:
Пропустити всі літери: залишаюся в тій же вершині.
Пропустити і виконати : повертаюся до кореня.
Виконати і пропустити : переходжу до лівого нащадка поточної вершини.
Виконати і : залишаюся в тій же вершині, як у випадку .
Оскільки можна потрапити в різні вузли після виконання , відповідь дорівнює .
Перша строка містить кількість тестів (n \leq 15). Кожен тест складається з двох непорожніх рядків. Перша строка містить набір інструкцій , а друга — набір інструкцій . Рядки містять лише літери , або . Довжина рядків не перевищує .
Для кожного тесту виведіть його номер і кількість досяжних вузлів. Оскільки відповідь може бути великою, виведіть її за модулем .
Приклад 1