#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;

const int MOD = int(1e9) + 7;

char S[100500];
int P[100500];

int nxt[100500][3];
int ways[100500];

int main()
{
	int Test=1; while (Test--){
    scanf("%s", S+1);
    int N = strlen(S+1);

    // 1. XYXYXY.. 또는 YXYXYX.. 꼴이면 답 무조건 1
    bool is_alternating = true;
    for(int i = 1; i <= N; i++) {
      if(S[i] == S[i-1]) {
        is_alternating = false;
      }
    }
    if(is_alternating) {
      puts("1");
      continue;
    }

    int prv[3] = {0, -1, -1};
    for(int i = 1; i <= N; i++) {
      P[i] = (P[i-1] + "12"[S[i] - 'a'] - '0') % 3;
      for(int j = prv[P[i]]+1; j <= i; j++) {
        nxt[j][P[i]] = i;
      }
      prv[P[i]] = i;
    }

    for(int p = 0; p < 3; p++) {
      for(int j = prv[p]+1; j <= N; j++) {
        nxt[j][p] = N+1;
      }
    }

    for(int i = 0; i <= N; i++) ways[i] = 0;
    ways[0] = 1;
    for(int i = 0; i <= N; i++) {
      for(int p = 0; p < 3; p++) {
        if(p != P[i]) (ways[nxt[i][p]] += ways[i]) %= MOD;
      }
    }

    int ans = 0;
    for(int i = 1; i <= N; i++) {
      if((P[N] - P[i] + 3) % 3 == 0) {
        (ans += ways[i]) %= MOD;
      }
    }

    printf("%d\n", ans);
	}

	return 0;
}