aaaaabb
 aabaaaa
 babbabaabbbbabwbvbhbbbaaabbabbbbbbbkabbbbabaaabbbbbbajabbaaabazbbbzbalbabbwbbaabbabacabdbabbbfaaabbb
 baaahbbbba
 ababavvvv
 abnxabbaab
 krflnzhter
 amaabbbbxaabbbabaabaabbaaabaaaaabibbabaabaaabaabcaaxabablbbbbmbbbaaaaaabbaabbbaaabaaaababaababbabbbb
 babbbaaaaaabbbaabaaaaaoaabababaababaaaaababaaaaaaabbbbbbaaapaabaaabaaababaaaabaaaabaaaaababaaaabaaab

5
 14
 42467327
 7
 7
 11
 0
 98718509
 813881762

#_________________ Mukul Mohan Varshney _______________#

#Template
import sys
import os
import math
import copy
from math import gcd
from bisect import bisect
from io import BytesIO, IOBase
from math import sqrt,floor,factorial,gcd,log,ceil
from collections import deque,Counter,defaultdict
from itertools import permutations, combinations

#define function 
def Int(): return int(sys.stdin.readline())
def Mint(): return map(int,sys.stdin.readline().split())
def Lstr(): return list(sys.stdin.readline().strip())
def Str(): return sys.stdin.readline().strip()
def Mstr(): return map(str,sys.stdin.readline().strip().split())
def List(): return list(map(int,sys.stdin.readline().split()))
def Hash(): return dict()
def Mod(): return 1000000007
def Ncr(n,r,p): return ((fact[n])*((ifact[r]*ifact[n-r])%p))%p
def Most_frequent(list): return max(set(list), key = list.count)
def Mat2x2(n): return [List() for _ in range(n)]

def Prime_factors(n):
     i = 2
     factors = set()
     while i * i <= n:
          if n % i:
               i += 1
          else:
               n //= i
               factors.add(i)
     if n > 1:
          factors.add(n)
     print(factors)     
     if len(factors)==2:
          return True
     else:
          return False

def Divisors(n) : 
     l = []  
     for i in range(1, int(math.sqrt(n) + 1)) :
          if (n % i == 0) : 
               if (n // i == i) : 
                    l.append(i) 
               else : 
                    l.append(i)
                    l.append(n//i)
     return l
     
def Sieve(n):                      
     prime=[True for i in range(n+1)]
     lst=[]
     p=2
     while p*p<=n:
          if prime[p]:
               for i in range(p*p,n+1,p):
                    prime[i]=False
          p=p+1
     for i in range(2,n+1):
          if prime[i]:
               lst.append(i)
     return lst    
     
def minimum_integer_not_in_list(a):
     b=max(a)
     if(b<1):
          return 1
          
     A=set(a)
     B=set(range(1,b+1))
     D=B-A
     if len(D)==0:
          return b+1
     else:
          return min(D)
 
# Driver Code 	
def solution():
     s=Lstr()
     ans=[0,0]
     for i in range(len(s)):
          if(s[i]=='b'):
               ans[1]=ans[0]
          elif(s[i]=='a'):
               ans[0]=(sum(ans)+1)%Mod()
     print(ans[0]%Mod())          

#Call the solve function          
if __name__ == "__main__":
     solution()  