#abc104d. [abc104_d]We Love ABC

[abc104_d]We Love ABC

题目描述

字符串 TTABC 数 是满足以下条件的整数三元组 (i,j,k)(i, j, k) 的数量:

  • 1i<j<kT1 ≤ i < j < k ≤ |T|T|T|TT 的长度)。
  • Ti=T_i = ATiT_iTT 的第 ii 个字符)。
  • Tj=T_j = B
  • Tk=T_k = C

例如,当 T=T = ABCBC 时,有三个满足条件的整数三元组 (i,j,k)(i, j, k)(1,2,3),(1,2,5),(1,4,5)(1, 2, 3), (1, 2, 5), (1, 4, 5)。因此,TT 的 ABC 数为 33

给定一个字符串 SSSS 中的每个字符都是 ABC?

QQSS? 的出现次数。我们可以用 ABC 替换 SS 中的每个 ?,得到 3Q3^Q 个字符串。求所有这些字符串的 ABC 数之和。

由于这个和可能非常大,因此以 109+710^9 + 7 为模打印这个和。

约束条件

  • 3S1053 ≤ |S| ≤ 10^5
  • SS 中的每个字符都是 ABC?

输入

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

SS

输出

打印所有 3Q3^Q 个字符串的 ABC 数之和,并以 109+710^9 + 7 为模。

示例输入 1

A??C

示例输出 1

8

在这种情况下,Q=2Q = 2,通过将 SS 中的 ? 分别替换为 ABC,可以得到 3Q=93^Q = 9 个字符串。每个字符串的 ABC 数如下所示:

  • AAAC00
  • AABC22
  • AACC00
  • ABAC11
  • ABBC22
  • ABCC22
  • ACAC00
  • ACBC11
  • ACCC00

将它们相加得到 0+2+0+1+2+2+0+1+0=80 + 2 + 0 + 1 + 2 + 2 + 0 + 1 + 0 = 8,因此我们打印 88109+710^9 + 7 取模的结果,即 88

示例输入 2

ABCBC

示例输出 2

3

Q=0Q = 0 时,我们打印 SS 本身的 ABC 数对 109+710^9 + 7 取模的结果。该字符串与题目中的示例相同,其 ABC 数为 33

示例输入 3

????C?????B??????A???????

示例输出 3

979596887

在这种情况下,所有 3Q3^Q 个字符串的 ABC 数之和为 22919796129242291979612924,我们应该将这个数对 109+710^9 + 7 取模得到 979596887979596887