#agc027e. [agc027_e]ABBreviate

[agc027_e]ABBreviate

问题描述

有一个由ab组成的字符串ss。Snuke可以任意多次以任意顺序执行以下两种操作之一:

  • 选择一个子串aa,将其替换为b
  • 选择一个子串bb,将其替换为a

通过这些操作序列,可以得到多少个字符串ss?计算结果对109+710^9 + 7取模之后输出。

约束条件

  • 1leqsleq1051 \\leq |s| \\leq 10^5
  • ssab组成。

输入

输入以以下格式从标准输入给出:

ss

输出

打印能够得到的字符串ss的数量,对109+710^9 + 7取模之后输出。

示例输入1

aaaa

示例输出1

6

可以得到六个字符串:

  • aaaa
  • aab
  • aba
  • baa
  • bb
  • a

示例输入2

aabb

示例输出2

5

可以得到五个字符串:

  • aabb
  • aaa
  • bbb
  • ab
  • ba

示例输入3

ababababa

示例输出3

1

Snuke无法执行任何操作。

示例输入4

babbabaaba

示例输出4

35