#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define Fast_IO ios::sync_with_stdio(false);
#define DEBUG fprintf(stderr,"Running on Line %d in Function %s\n",__LINE__,__FUNCTION__)
//mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
#define fir first
#define sec second
#define mod 1000000007
#define ll long long
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
inline int read()
{
	char ch=getchar(); int nega=1; while(!isdigit(ch)) {if(ch=='-') nega=-1; ch=getchar();}
	int ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();}
	if(nega==-1) return -ans;
	return ans;
}
typedef pair<int,int> pii;
inline int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}
inline int add(int x,int y,int z){return add(add(x,y),z);}
inline int sub(int x,int y){return x-y<0?x-y+mod:x-y;}
inline int mul(int x,int y){return 1LL*x*y%mod;}
inline int mul(int x,int y,int z){return mul(mul(x,y),z);}
#define N 100005
char s[N];
int nxt[N][3],a[N],f[N];
signed main()
{
	scanf("%s",s+1);
	int n=strlen(s+1);
	for(int i=1;i<=n;i++) a[i]=s[i]-'a';
	bool ok=0; for(int i=2;i<=n;i++) if(s[i]==s[i-1]) ok=1;
	if(!ok) {cout<<1<<endl; return 0;}
	nxt[n+1][0]=nxt[n+1][1]=nxt[n+2][0]=nxt[n+2][1]=n+2;
	int sum=0;
	f[n+1]=1;
	for(int i=n;i>=1;i--)
	{
		sum=(sum+a[i]+1)%3;
		if(a[i]==0) nxt[i][0]=i+1;
		else if(a[i+1]==1) nxt[i][0]=i+2;
		else nxt[i][0]=nxt[i+2][0];
		if(a[i]==1) nxt[i][1]=i+1;
		else if(a[i+1]==0) nxt[i][1]=i+2;
		else nxt[i][1]=nxt[i+2][1];
		f[i]=add(f[nxt[i][0]],f[nxt[i][1]],sum==0);
	}
	if(sum==0) f[1]=sub(f[1],1);
	cout<<f[1]<<endl;
	return 0;
}