#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
template <class T>
T SQR(const T &a) {
  return a * a;
}
long long calc(char *str) {
  int n = strlen(str);
  int pos = -1;
  for (int i = (0), ei = (n); i < ei; i++)
    if (str[i] == 'A' && str[(i + 1) % n] == 'B' && str[(i + 2) % n] == 'B')
      pos = i;
  long long F[60] = {0, 1};
  for (int i = (2), ei = (60); i < ei; i++) F[i] = F[i - 1] + F[i - 2];
  if (pos == -1) return F[n / 2] + 2 * F[n / 2 - 1];
  rotate(str, str + pos, str + n);
  vector<char> vec;
  for (int i = 0; i < n - 1; i++) {
    if (str[i] == 'A' && str[i + 1] == 'B' && str[(i + 2) % n] == 'B')
      vec.push_back('B');
    else if (str[i] == 'A' && str[i + 1] == 'A' && str[(i + 2) % n] == 'B') {
      vec.push_back('A');
      i++;
    } else if (str[i] == 'A' && str[i + 1] == 'B' && str[(i + 2) % n] == 'A')
      vec.push_back(0);
  }
  long long open = 1;
  long long close = 0;
  for (int i = vec.size() - 1; i != 0; i--) {
    if (vec[i] == 0) {
      long long s = open + close;
      close = open;
      open = s;
    } else if (vec[i] == 'B') {
      open = open + close;
      close = 0;
    } else if (vec[i] == 'A') {
      close = open;
    }
  }
  return open + close;
}
long long check(char *pat) {
  char str[100] = {0};
  int res = 0;
  int n = strlen(pat);
  for (int i = (0), ei = (1 << n); i < ei; i++) {
    for (int j = (0), ej = (n); j < ej; j++) str[j] = 'A' + ((i >> j) & 1);
    bool rev[20] = {0};
    for (int j = (0), ej = (n - 1); j < ej; j++)
      if (str[j] == 'A' && str[j + 1] == 'B') rev[j] = rev[j + 1] = 1;
    if (str[n - 1] == 'A' && str[0] == 'B') rev[n - 1] = rev[0] = 1;
    for (int j = (0), ej = (n); j < ej; j++)
      if (rev[j]) str[j] = 'A' + (str[j] == 'A');
    if (strcmp(str, pat) == 0) ++res;
  }
  return res;
}
long long getCnt(char *str) {
  int n = strlen(str);
  int C[2] = {0};
  for (int i = (0), ei = (n); i < ei; i++) C[str[i] - 'A']++;
  if (C[0] == 0 || C[1] == 0) return 1;
  bool bad = 0;
  char pat[5] = "AABB";
  if (n > 3) {
    for (int i = (0), ei = (n); i < ei; i++) {
      bool same = true;
      for (int j = (0), ej = (4); j < ej; j++)
        if (str[(i + j) % n] != pat[j]) same = false;
      bad |= same;
    }
  }
  if (bad) return 0;
  strcpy(pat, "ABB");
  bool ok = 0;
  for (int i = (0), ei = (n); i < ei; i++) {
    bool same = true;
    for (int j = (0), ej = (3); j < ej; j++)
      if (str[(i + j) % n] != pat[j]) same = false;
    ok |= same;
  }
  if (!ok) {
    reverse(str, str + n);
    for (int i = (0), ei = (n); i < ei; i++)
      if (str[i] == 'A')
        str[i] = 'B';
      else
        str[i] = 'A';
  }
  long long res = calc(str);
  return res;
}
void run() {
  char str[200];
  scanf("%s", str);
  long long res = getCnt(str);
  cout << res << endl;
}
int main() {
  run();
  return 0;
}
