#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<int, int>;
int main() {
  int n;
  cin >> n;
  string s;
  cin >> s;
  vector<vector<int>> dp(3), ndp(3);
  for (int i = 0; i < (3); i++) dp[i] = vector<int>(4);
  for (int i = 0; i < (3); i++) ndp[i] = vector<int>(4);
  auto add = [](int& a, int b) { a = (a + b) % 1000000007; };
  for (int i = 0; i < (n); i++) {
    for (int j = 0; j < (3); j++)
      for (int k = 0; k < (4); k++) ndp[j][k] = dp[j][k];
    if (s[i] == 'a') {
      add(ndp[0][0], 1);
    } else if (s[i] == 'b' || s[i] == 'c') {
      int j = s[i] - 'a';
      for (int k = 0; k < (4); k++) add(ndp[j][k], dp[j - 1][k]);
    } else {
      add(ndp[0][1], 1);
      for (int j = 0; j < (3 - 1); j++)
        for (int k = 0; k < (j + 2); k++) {
          add(ndp[j + 1][k + 1], dp[j][k]);
        }
    }
    swap(dp, ndp);
  }
  int q = 0;
  for (int i = 0; i < (n); i++)
    if (s[i] == '?') q++;
  int ans = 0;
  for (int k = 0; k < (4); k++) {
    int c = 1;
    for (int _ = 0; _ < (q - k); _++) c = ((ll)c * 3) % 1000000007;
    ans = (ans + (ll)dp[2][k] * c) % 1000000007;
  }
  cout << ans << endl;
  return 0;
}
