#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#define Mod 1000000007
using namespace std;
void add(int& x,int y)
{
	x+=y;
	if(x>=Mod)x-=Mod;
	return ;
}
int n;
char s[100010];
int f[100010];
vector<int>vec[3],pos;
int dp[100010];
int main()
{
	scanf("%s",s+1);
	n=strlen(s+1);
	for(int i=1;i<=n;i++)
		f[i]=(f[i-1]+s[i]-'a'+1)%3;
	for(int i=1;i<n;i++)
		if(s[i]==s[i+1])pos.push_back(i);
	pos.push_back(n);
	if(pos.size()==1){
		printf("1\n");
		return 0;
	}
	for(int i=1;i<=n;i++)
		vec[f[i]].push_back(i);
	vec[0].push_back(n+1);
	vec[1].push_back(n+1);
	vec[2].push_back(n+1);
	dp[0]=1;
	for(int i=0;i<n;i++)
	{
		add(dp[i+1],dp[i]);
		int x=(*lower_bound(pos.begin(),pos.end(),i+1))+1;
		int c=((3-s[i+1]+'a'-1)%3+f[i])%3;
		x=*lower_bound(vec[c].begin(),vec[c].end(),x);
		if(x>n)continue;
		add(dp[x],dp[i]);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
		if(f[n]==f[i])add(ans,dp[i]);
	printf("%d\n",ans);
	return 0;
}