#include <cstdio>
#include <cstring>
#define mod 10007
#define MN 100005
int plus(int x, int y) {
if (x+y < mod) return x+y;
return (x+y)-mod;
}
int d[MN], pos[26], n;
char S[MN];
int main() {
scanf("%s",S+1);
n = strlen(S+1);
for (int i = 1; i <= n; i++) {
int k = (int)(S[i]-'a');
if (pos[k] == 0) d[i]++;
else d[i] = plus(d[i], d[pos[k]]);
for (int j = pos[k]+1; j < i; j++) d[i] = plus(d[i], d[j]);
pos[k] = i;
}
int res = 0;
for (int i = 1; i <= n; i++) res = plus(res, d[i]);
printf("%d",res);
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNkZWZpbmUgbW9kIDEwMDA3CiNkZWZpbmUgTU4gMTAwMDA1CmludCBwbHVzKGludCB4LCBpbnQgeSkgewoJaWYgKHgreSA8IG1vZCkgcmV0dXJuIHgreTsKCXJldHVybiAoeCt5KS1tb2Q7Cn0KaW50IGRbTU5dLCBwb3NbMjZdLCBuOwpjaGFyIFNbTU5dOwppbnQgbWFpbigpIHsKCXNjYW5mKCIlcyIsUysxKTsKCW4gPSBzdHJsZW4oUysxKTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWludCBrID0gKGludCkoU1tpXS0nYScpOwoJCWlmIChwb3Nba10gPT0gMCkgZFtpXSsrOwoJCWVsc2UgZFtpXSA9IHBsdXMoZFtpXSwgZFtwb3Nba11dKTsKCQlmb3IgKGludCBqID0gcG9zW2tdKzE7IGogPCBpOyBqKyspIGRbaV0gPSBwbHVzKGRbaV0sIGRbal0pOwoJCXBvc1trXSA9IGk7Cgl9CglpbnQgcmVzID0gMDsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgcmVzID0gcGx1cyhyZXMsIGRbaV0pOwoJcHJpbnRmKCIlZCIscmVzKTsKfQ==