#include <cstdio>
#include <cstring>

using namespace std;

const int mod = 1000000007;
char s[100001];
int r[100001][3][2];
int sum[100001];
int dp[100001];

int main() {
    int n, i, j, k;
    long long ans = 0;
    
    scanf("%s", s);
    n = strlen(s);
    
    for (i = 0; i + 1 < n; i++) {
        if (s[i] == s[i + 1]) break;
    }
    
    if (i + 1 == n) {
        puts("1");
        return 0;
    }
    
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 2; j++) {
            r[n][i][j] = -1;
        }
    }
    
    for (i = n - 1; i >= 0; i--) {
        int c;
        
        if (s[i] == 'a') {
            c = 1;
        } else {
            c = 2;
        }
        
        sum[i] = (sum[i + 1] + c) % 3;
        
        for (j = 0; j < 3; j++) {
            for (k = 0; k < 2; k++) {
                r[i][(j + c) % 3][k] = r[i + 1][j][k];
            }
        }
        r[i][c][0] = i;
        
        if (s[i] == s[i + 1]) {
            for (j = 0; j < 3; j++) r[i][(j + c) % 3][1] = r[i + 1][j][0];
        }
    }
    
    dp[0] = 1;
    
    for (i = 0; i < n; i++) {
        int p;
        
        dp[i + 1] += dp[i];
        if (dp[i + 1] >= mod) dp[i + 1] -= mod;
        
        if (s[i] == 'a') {
            p = r[i][2][1];
        } else {
            p = r[i][1][1];
        }
        
        if (p >= 0) {
            dp[p + 1] += dp[i];
            if (dp[p + 1] >= mod) dp[p + 1] -= mod;
        }
    }
    
    for (i = 1; i <= n; i++) {
        if (sum[i] == 0) ans += dp[i];
    }
    
    printf("%lld\n", ans % mod);
    
    return 0;
}
