#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:32000000")
const int nil = -1;
using namespace std;
inline bool read(int& val) { return scanf("%d", &val) != -1; }
inline bool read(long long& val) { return scanf("%I64d", &val) != -1; }
inline bool read(double& val) { return scanf("%lf", &val) != -1; }
inline bool read(char* val) { return scanf("%s", val) != -1; }
template <class T1, class T2>
inline bool read(T1& a, T2& b) {
  return read(a) && read(b);
}
template <class T1, class T2, class T3>
inline bool read(T1& a, T2& b, T3& c) {
  return read(a) && read(b) && read(c);
}
template <class T1, class T2, class T3, class T4>
inline bool read(T1& a, T2& b, T3& c, T4& d) {
  return read(a) && read(b) && read(c) && read(d);
}
template <class T1, class T2, class T3, class T4, class T5>
inline bool read(T1& a, T2& b, T3& c, T4& d, T5& e) {
  return read(a) && read(b) && read(c) && read(d) && read(e);
}
const int N = 1111111;
const long long mod = 1000000007;
char str[N];
long long cnt[N];
int main() {
  read(str);
  int n = strlen(str);
  cnt[0] = 0;
  long long sum = 0;
  long long pow2 = 1;
  for (int i = 0, _ = (n); i < _; ++i) {
    if (str[i] == 'a') {
      pow2 = pow2 * 2 % mod;
    } else {
      sum = (sum + pow2 - 1) % mod;
    }
  }
  cout << sum % mod << endl;
  return 0;
}
