#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 100010
#define mod 1000000007
using namespace std;
int n;
char s[maxn];
int a[maxn];
int sum[maxn];
int pos[maxn][3];
int nxt[maxn];
void add(int &x,int y)
{
    x+=y;
    if(x>=mod)  x-=mod;
}
int f[maxn];
int main()
{
    scanf("%s",s+1);
    n=strlen(s+1);  
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='a')  a[i]=1;
        if(s[i]=='b')  a[i]=2;
    }
    for(int i=1;i<=n;i++)  sum[i]=(sum[i-1]+a[i])%3;
    int p=n+1;
    for(int i=n;i>=1;i--)
    {
        nxt[i]=p;
        if(a[i]==a[i-1])  p=i;
        memcpy(pos[i],pos[i+1],sizeof(pos[i+1]));
        pos[i][sum[i]]=i;       
    }
    if(p==n+1)
    {
        puts("1");
        return 0;
    }
    f[0]=1;
    for(int i=0;i<n;i++)
    {
        int x=nxt[i+1];
        int y=pos[x][(sum[i]+1)%3],z=pos[x][(sum[i]+2)%3];
        if(y&&a[i+1]!=1)  add(f[y],f[i]);
        if(z&&a[i+1]!=2)  add(f[z],f[i]);
        add(f[i+1],f[i]);
    }
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        if((sum[n]-sum[i]+3)%3==0)  add(ans,f[i]);
    }
    cout<<ans<<endl;
    return 0;
}