#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const long long INF_LL = 1000000000000000000LL;
const double pi = 2 * acos(0.0);
template <class T>
void smin(T& a, T b) {
  if (a > b) a = b;
}
template <class T>
void smax(T& a, T b) {
  if (a < b) a = b;
}
template <class T>
T gcd(T a, T b) {
  return b == 0 ? a : gcd(b, a % b);
}
template <class T>
T sqr(T a) {
  return a * a;
}
template <class T>
void outp(const vector<T>& v) {
  for (int i(0), _b(int((v).size())); i < _b; ++i)
    cout << v[i] << (i + 1 == int((v).size()) ? '\n' : ' ');
}
template <class T>
void outp(T* v, int n) {
  for (int i(0), _b(n); i < _b; ++i) cout << *v++ << (i + 1 == n ? '\n' : ' ');
}
const int h = 111;
char t[h];
string s;
long long d[h];
long long f(char c) {
  int n = int((s).size());
  d[0] = 1;
  d[1] = s[0] == c;
  for (int i(1), _b(n); i < _b; ++i) {
    if (s[i] == 'A') {
      d[i + 1] = d[i];
      if (s[i - 1] == 'B' && (i != 1 || c == 'A')) d[i + 1] += d[i - 1];
    } else {
      d[i + 1] = 0;
      if (s[i - 1] == 'B')
        d[i + 1] = d[i];
      else if (i > 1 && s[i - 2] == 'B' && (i != 2 || c == 'A'))
        d[i + 1] = d[i - 2];
    }
  }
  return d[n];
}
int main() {
  scanf("%s", t);
  s = t;
  int n = int((s).size());
  long long ans = f('A');
  if (s[0] == 'A' && s[n - 1] == 'B') {
    s = s.substr(1, n - 2);
    ans += f('A') + f('B');
  } else if (s[0] == 'B') {
    s = s.substr(1, n - 1);
    reverse((s).begin(), (s).end());
    for (int i(0), _b(int((s).size())); i < _b; ++i) s[i] = 'A' + 'B' - s[i];
    ans += f('A');
  }
  cout << ans << endl;
}
