#include<bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 +7;
const int maxn = 1e6 +5;
bool u[maxn];

long long fun(string t){
	
	long long ans = 0;
	
	map <char, int> m;
	
	for(int i=0; i<t.size(); i++){
		m[t[i]]++;
	}
	
	for(auto x: m){
	    if(x.second==1){
	        ans++;
	    }
	}
	
	return ans%MOD;
}
 
long long f(string s){
	long long ans = s.size();
	
	string t;
	
	for(int i=0; i<s.size(); i++){
		for(int j=i+1; j<s.size(); j++){
			t = s.substr(i, (j-i)+1);
			//cout<<t<<" "<<fun(t)<<'\n';
			ans += fun(t);
		}
	}
	
	return ans%MOD;
}
 
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	string s;
	cin>>s;
	
	int n = s.size();
	
	set <char> st;
	
	char c1, c2;
	
	bool c = true;
	bool T1 = true;
 
	int id1 = 0;
	int id2 = 0;
	
	map <char, int> m;
	int cnt = 0;
	
	string T;
	
	for(int i=0; i<s.size(); i++){
		st.insert(s[i]);
		
		if(s[i]!=s[i+1] && i!=s.size()-1){
		     c1 = s[i];
		     c2 = s[i+1];
		     
		     id1 = i;
		     id2 = i+1;
		     
		     cnt++;
		     //cout<<s[i]<<" "<<s[i+1]<<'\n';
		}
		
		m[s[i]]++;
		
		if(u[s[i]]){
			T1 = false;
		}
		else if(T1){
			T+=s[i];
		}
		
		u[s[i]] = 1;
		
	}
	
	//cout<<T<<"\n";
	//cout<<cnt<<"\n";
	if(m.size()==T.size()){
	    int VAL = T.size();
	    
	    cout<<(VAL * (n - VAL +1))*(VAL);
	    //cout<<"ok";
	    return 0;
	}
	
	if(st.size()==1){
		cout<<s.size();
		return 0;
	}
	
	if(st.size()==2 && cnt==1){
	    cout<<s.size() * 2;
	    return 0;
	}
	
	cout<<f(s);
}