#include <bits/stdc++.h>
const int maxn = 100 + 10;
char c[maxn];
int a[maxn];
long long dp[maxn][2];
long long ans;
int n;
inline int p(int x) { return x == 0 ? n - 1 : x - 1; }
inline int s(int x) { return x == n - 1 ? 0 : x + 1; }
int main() {
  scanf("%s", c);
  n = strlen(c);
  for (int i = 1; i <= n; i++) a[i] = c[i - 1] == 'B';
  if (a[1] && (!a[n])) {
    bool t = a[1];
    for (int i = 1; i < n; i++) a[i] = a[i + 1];
    a[n] = t;
  }
  dp[0][0] = 1;
  dp[0][1] = 1;
  for (int i = 1; i <= n; i++) {
    if (a[i] && a[i + 1]) {
      dp[i][0] = dp[i - 1][0];
      dp[i][1] = dp[i - 1][0];
      continue;
    }
    if (a[i] && (!a[i + 1])) {
      dp[i][0] = dp[i - 1][0];
      dp[i][1] = dp[i - 1][0];
      continue;
    }
    if ((!a[i]) && a[i + 1]) {
      dp[i][0] = a[i - 1] * dp[i - 2][1];
      dp[i][1] = dp[i - 1][0] + a[i - 1] * dp[i - 2][1];
      continue;
    }
    if (!(a[i] || a[i + 1])) {
      dp[i][0] = dp[i - 1][0] + a[i - 1] * dp[i - 2][1];
      dp[i][1] = a[i - 1] * dp[i - 2][1];
      continue;
    }
  }
  ans = dp[n][0];
  if ((!a[1]) && a[n]) {
    a[n] = 0;
    for (int i = 1; i < n; i++) a[i] = a[i + 1];
    n--;
    dp[0][0] = 1;
    dp[0][1] = 1;
    for (int i = 1; i < n; i++) {
      if (a[i] && a[i + 1]) {
        dp[i][0] = dp[i - 1][0];
        dp[i][1] = dp[i - 1][0];
        continue;
      }
      if (a[i] && (!a[i + 1])) {
        dp[i][0] = dp[i - 1][0];
        dp[i][1] = dp[i - 1][0];
        continue;
      }
      if ((!a[i]) && a[i + 1]) {
        dp[i][0] = a[i - 1] * dp[i - 2][1];
        dp[i][1] = dp[i - 1][0] + a[i - 1] * dp[i - 2][1];
        continue;
      }
      if (!(a[i] || a[i + 1])) {
        dp[i][0] = dp[i - 1][0] + a[i - 1] * dp[i - 2][1];
        dp[i][1] = a[i - 1] * dp[i - 2][1];
        continue;
      }
    }
    ans += dp[n - 1][0];
  }
  printf("%I64d\n", ans);
  return 0;
}
