#include <bits/stdc++.h>

using namespace std;

#define lli long long int
#define MOD 1000000007
#define DEBUG 0
#define REP(i,n) for(int i=0;i<n;i++)
#define REP2(i,n) for(lli i=1;i<=n;i++)

lli dp[100010][4];

int main(){

	string s;
	cin>>s;
	lli N = s.size();

	for(lli i=N;i>=0;i--){
		for(lli j=3;j>=0;j--){
			if(i==N){
				dp[i][j] = (j==3 ? 1:0);
			}
			else{
				dp[i][j] = dp[i+1][j] * (s.at(i)=='?'?3:1);
				if(j<3 && (s.at(i) == '?' || s.at(i) == "ABC"[j])){
					dp[i][j] += dp[i+1][j+1];
				}
				dp[i][j] %= MOD;
			}
		}
	}
	cout<<dp[0][0]<<endl;
	return 0;
}

