#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 300 * 1000 + 7;
const long long MOD = 998244353;
const double PI = 2 * acos(0.0);
string N;
long long n;
long long ans = 1;
long long dp[MAXN], dpp[MAXN];
bool ok[MAXN];
int main(void) {
  dp[0] = 1;
  dp[1] = 1;
  dp[2] = 3;
  dp[3] = 4;
  dpp[0] = 1;
  dpp[1] = 2;
  dpp[2] = 3;
  dpp[3] = 5;
  for (long long i0 = 4; i0 <= 65; i0++) {
    dp[i0] = dp[i0 - 1] + dp[i0 - 2];
    dpp[i0] = dpp[i0 - 1] + dpp[i0 - 2];
  }
  cin >> N;
  n = N.size();
  for (long long i0 = 0; i0 < n; i0++) {
    long long x = i0, xx = (i0 + 1) % n, y = (i0 + 2) % n, yy = (i0 + 3) % n;
    if (N[x] == 'A' && N[x] == N[xx] && N[y] == N[yy] && N[x] != N[y]) {
      cout << 0 << endl;
      return 0;
    }
  }
  bool tata = true;
  for (long long i0 = 0; i0 < n; i0++) {
    long long x = i0, xx = (i0 + 1) % n;
    if (N[x] == N[(x + 1) % n]) {
      tata = false;
      break;
    }
  }
  if (tata) {
    cout << dp[n / 2] << endl;
    return 0;
  }
  for (long long i0 = 0; i0 < n; i0++) {
    long long x = i0, xx = (i0 + 1) % n, y = (i0 + 2) % n, yy = (i0 + 3) % n;
    if (N[x] == 'A' && N[x] == N[xx]) {
      ok[xx] = true;
      ok[y] = true;
      ok[yy] = true;
    }
    x = i0, xx = (i0 - 1 + n) % n, y = (i0 - 2 + n) % n, yy = (i0 - 3 + n) % n;
    if (N[x] == 'B' && N[x] == N[xx]) {
      ok[xx] = true;
      ok[y] = true;
      ok[yy] = true;
    }
  }
  long long tot = 0;
  long long x = 0, y = 0;
  bool gg = true;
  for (long long i0 = 0; i0 < n; i0++) {
    if (gg) {
      if (!ok[i0])
        x++;
      else {
        gg = false;
      }
    } else {
      if (!ok[i0])
        tot++;
      else {
        long long kkkk = tot / 2;
        ans *= dpp[kkkk];
        tot = 0;
      }
    }
  }
  y = tot;
  tot = 0;
  tot += x + y;
  long long kkkk = tot / 2;
  ans *= dpp[kkkk];
  cout << ans << endl;
  return 0;
}
