Олимпиадный тренинг

Задача . Bovine Genetics


Задача

Темы:
Фермер Джон занялся редактированием геномов. Как известно, геном может быть представлен строкой состоящей из символов 'A', 'C', 'G', 'T'. Максимальная длина строки генома, рассматриваемая ФД есть 10^5.

ФД начинает с одного генома и редактирует его, выполняя следующие шаги:

  1. Разделяет геном между каждыми двумя последовательными равными символами.
  2. Реверсирует каждую из полученных подстрок.
  3. Конкатенирует реверсированные подстроки в том же порядке.

Например, если ФД начинает с генома AGGCTTT, то он выполнит следующие шаги:

  1. Разделит между последовательными равными символами G и T получит AG | GCT | T | T.
  2. Реверсирует каждую подстроку, получит GA | TCG | T | T.
  3. Конкатенирует реверсированные подстроки, получит GATCGTT.

К несчастью, после редактирования генома компьютер ФД сломался, и ФД потерял последовательность генома, с которого он начинал. Более того, некоторые части отредактированного генома повредились, заменившись на знак '?'.

По заданной последовательности отредактированного генома помогите ФД определить количество возможностей для стартового генома по модулю \(10^9+7\).

ФОРМАТ ВВОДА: (с клавиатуры / stdin):

Непустая строка символов , где каждый символ один из A, G, C, T, ?.

ФОРМАТ ВЫВОДА: (на экран / stdout):

Количество возможных оригинальных геномов по модулю \(10^9+7\).


Примеры
Входные данныеВыходные данные
1 ?
4

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя