// Author: __BruteForce__
#include <bits/stdc++.h>
using namespace std;
#define MAX_C 30
#define MOD (int)(1e9 + 7)
string str;
int dp[MAX_C][2];
int res = 0;
int main() {
cin.tie(0)->sync_with_stdio(false);
cin >> str;
for (int i = 0; i < (int)str.size(); i++) {
int ch = str[i] - 'A';
int temp = 0;
for (int j = 0; j < ch; j++) {
temp = (temp + dp[j][0]) % MOD;
}
res = (res + temp) % MOD;
dp[ch][1] = (dp[ch][1] + temp) % MOD;
temp = 1;
for (int j = ch + 1; j < 26; j++) {
temp = (temp + dp[j][1]) % MOD;
}
res = (res + temp) % MOD;
dp[ch][0] = (dp[ch][0] + temp) % MOD;
}
cout << res << "\n";
}
Ly8gQXV0aG9yOiBfX0JydXRlRm9yY2VfXwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIE1BWF9DIDMwCiNkZWZpbmUgTU9EIChpbnQpKDFlOSArIDcpCgpzdHJpbmcgc3RyOwppbnQgZHBbTUFYX0NdWzJdOwppbnQgcmVzID0gMDsKCmludCBtYWluKCkgewogICAgY2luLnRpZSgwKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCiAgICBjaW4gPj4gc3RyOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KXN0ci5zaXplKCk7IGkrKykgewogICAgICAgIGludCBjaCA9IHN0cltpXSAtICdBJzsKICAgICAgICBpbnQgdGVtcCA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaDsgaisrKSB7CiAgICAgICAgICAgIHRlbXAgPSAodGVtcCArIGRwW2pdWzBdKSAlIE1PRDsKICAgICAgICB9CiAgICAgICAgcmVzID0gKHJlcyArIHRlbXApICUgTU9EOwogICAgICAgIGRwW2NoXVsxXSA9IChkcFtjaF1bMV0gKyB0ZW1wKSAlIE1PRDsKICAgICAgICAKICAgICAgICB0ZW1wID0gMTsKICAgICAgICBmb3IgKGludCBqID0gY2ggKyAxOyBqIDwgMjY7IGorKykgewogICAgICAgICAgICB0ZW1wID0gKHRlbXAgKyBkcFtqXVsxXSkgJSBNT0Q7CiAgICAgICAgfQogICAgICAgIHJlcyA9IChyZXMgKyB0ZW1wKSAlIE1PRDsKICAgICAgICBkcFtjaF1bMF0gPSAoZHBbY2hdWzBdICsgdGVtcCkgJSBNT0Q7CiAgICB9CgogICAgY291dCA8PCByZXMgPDwgIlxuIjsKfQo=