#include <bits/stdc++.h>
using namespace std;
string S;
map<string, int> mp;
long long rec(string temp = S) {
  long long ans = 0;
  for (int i = 0; i < temp.size() - 1; ++i) {
    if (temp[i] == 'a' && temp[i + 1] == 'a') {
      string n;
      for (int j = 0; j < i; ++j) n.push_back(temp[j]);
      n.push_back('b');
      for (int j = i + 2; j < temp.size(); ++j) n.push_back(temp[j]);
      auto itr = mp.find(n);
      if (itr == mp.end()) {
        ++ans;
        ans %= 1000000007;
        ++mp[n];
        ans += rec(n);
        ans %= 1000000007;
      }
    }
    if (temp[i] == 'b' && temp[i + 1] == 'b') {
      string n;
      for (int j = 0; j < i; ++j) n.push_back(temp[j]);
      n.push_back('a');
      for (int j = i + 2; j < temp.size(); ++j) n.push_back(temp[j]);
      auto itr = mp.find(n);
      if (itr == mp.end()) {
        ++ans;
        ans %= 1000000007;
        ++mp[n];
        ans += rec(n);
        ans %= 1000000007;
      }
    }
  }
  return ans;
}
int main(void) {
  cin >> S;
  printf("%lld\n", (rec() + 1) % 1000000007);
  return 0;
}
