#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
const int N=100005;
int fl,n,ans,dp[N],pre[N],nxt[N][3];
char s[N];
void up(int &x,int y){x=x-mod+y;x=(x<0)?x+mod:x;}
int main()
{
	scanf("%s",s+1);n=strlen(s+1);
	fl=1;
	for (int i=1;i<n;i++) fl&=(s[i]!=s[i+1]);
	if (fl) return puts("1"),0;
	for (int i=1;i<=n;i++) pre[i]=(pre[i-1]+(s[i]=='b')+1)%3;
	for (int i=n;i>=1;i--)
	{
		for (int j=0;j<=2;j++) nxt[i][j]=nxt[i+1][j];
		nxt[i][pre[i]]=i;
	}
	dp[0]=1;
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=2;j++)
		{
			int t=nxt[i][(pre[i-1]+j)%3];
			if (t) up(dp[t],dp[i-1]);
		}
		if (pre[i]==pre[n]) up(ans,dp[i]);
	}
	printf("%d\n",ans);
	return 0;
} 