100 atcoder#ABC104D. [ABC104D] We Love ABC

[ABC104D] We Love ABC

Score : 400400 points

Problem Statement

The ABC number of a string TT is the number of triples of integers (i,j,k)(i, j, k) that satisfy all of the following conditions:

  • 1i<j<kT1 \leq i < j < k \leq |T| (T|T| is the length of TT.)
  • Ti=T_i = A (TiT_i is the ii-th character of TT from the beginning.)
  • Tj=T_j = B
  • Tk=T_k = C

For example, when T=T = ABCBC, there are three triples of integers (i,j,k)(i, j, k) that satisfy the conditions: (1,2,3),(1,2,5),(1,4,5)(1, 2, 3), (1, 2, 5), (1, 4, 5). Thus, the ABC number of TT is 33.

You are given a string SS. Each character of SS is A, B, C or ?.

Let QQ be the number of occurrences of ? in SS. We can make 3Q3^Q strings by replacing each occurrence of ? in SS with A, B or C. Find the sum of the ABC numbers of all these strings.

This sum can be extremely large, so print the sum modulo 109+710^9 + 7.

Constraints

  • 3S1053 \leq |S| \leq 10^5
  • Each character of SS is A, B, C or ?.

Input

Input is given from Standard Input in the following format:

SS

Output

Print the sum of the ABC numbers of all the 3Q3^Q strings, modulo 109+710^9 + 7.

A??C
8

In this case, Q=2Q = 2, and we can make 3Q=93^Q = 9 strings by by replacing each occurrence of ? with A, B or C. The ABC number of each of these strings is as follows:

  • AAAC: 00
  • AABC: 22
  • AACC: 00
  • ABAC: 11
  • ABBC: 22
  • ABCC: 22
  • ACAC: 00
  • ACBC: 11
  • ACCC: 00

The sum of these is 0+2+0+1+2+2+0+1+0=80 + 2 + 0 + 1 + 2 + 2 + 0 + 1 + 0 = 8, so we print 88 modulo 109+710^9 + 7, that is, 88.

ABCBC
3

When Q=0Q = 0, we print the ABC number of SS itself, modulo 109+710^9 + 7. This string is the same as the one given as an example in the problem statement, and its ABC number is 33.

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

In this case, the sum of the ABC numbers of all the 3Q3^Q strings is 22919796129242291979612924, and we should print this number modulo 109+710^9 + 7, that is, 979596887979596887.