#include <bits/stdc++.h>
using namespace std;
const int max_n = 100;
int n;
char s[max_n + 10], t[max_n + 10];
long long dp[max_n][2];
void reposition(int k) {
  for (int i = 0; i < n; ++i) t[i] = s[(k + 1 + i) % n];
  for (int i = 0; i < n; ++i) s[i] = t[i];
}
long long X[max_n];
long long y(int k) {
  X[0] = 1;
  X[1] = 2;
  for (int i = 2; i < k; ++i) X[i] = X[i - 1] + X[i - 2];
  if (k == 1)
    return 1;
  else if (k == 2)
    return 3;
  else
    return X[k - 1] + X[k - 3];
}
int main() {
  scanf("%s", s);
  for (n = 0; s[n] != '\0'; ++n)
    ;
  if (s[0] != s[n - 1]) {
    bool sptype = true;
    for (int i = 0; i < n - 1; ++i)
      if (s[i] == s[i + 1]) {
        reposition(i);
        sptype = false;
        break;
      }
    if (sptype) {
      assert(n % 2 == 0);
      cout << y(n / 2) << endl;
      return 0;
    }
  }
  assert(s[0] == s[n - 1]);
  if (s[0] == 'A') {
    dp[0][0] = 1;
    dp[0][1] = 0;
  } else {
    dp[0][0] = 1;
    dp[0][1] = 1;
  }
  for (int i = 1; i < n; ++i) {
    if (s[i] == 'A') {
      dp[i][0] = dp[i - 1][1] + (s[i - 1] == 'A' ? dp[i - 1][0] : 0);
      dp[i][1] = (s[i - 1] == 'A' ? 0 : dp[i - 1][0]);
    } else {
      dp[i][0] = dp[i - 1][1] + (s[i - 1] == 'A' ? dp[i - 1][0] : 0);
      dp[i][1] = dp[i - 1][1];
    }
  }
  cout << (s[n - 1] == 'A' ? dp[n - 1][0] : 0) + dp[n - 1][1] << endl;
}
