#include<bits/stdc++.h>
const int N=1e5+5,mo=1e9+7;
int n,i,j,nxt[N][3],lst,f[N],s[N];
char c[N];
inline void add(int&x,int y){x+=y-mo;x+=x>>31&mo;}
int main(){
	scanf("%s",c+1);n=strlen(c+1);
	for(i=1;i<=n;++i)s[i]=(s[i-1]+c[i]-'a'+1)%3;
	f[n+1]=1;
	for(i=n;i;--i){
		memcpy(nxt[i],nxt[i+1],12);nxt[i][s[i]]=i;
		if(i<n && c[i]==c[i+1])lst=i+1;
		int a=0,b=0;
		if(c[i]=='a')a=i;else b=i;
		if(!a)a=nxt[lst][(s[i-1]+1)%3];
		if(!b)b=nxt[lst][(s[i-1]+2)%3];
		if(a)add(f[i],f[a+1]);if(b)add(f[i],f[b+1]);
		if(s[i-1]==s[n] && i>1)add(f[i],1);
	}
//for(i=1;i<=n;++i)printf("%d ",f[i]);puts("");
	if(!lst)f[1]=1;
	printf("%d\n",f[1]);
	return 0;	
}