#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int P=998244353;
inline ll read(){
    char c=getchar();while (c!='-'&&(c<'0'||c>'9'))c=getchar();
    ll k=0,kk=1;if (c=='-')c=getchar(),kk=-1;
    while (c>='0'&&c<='9')k=k*10+c-'0',c=getchar();
	return kk*k;
}
const int N=1005;
string st;
int f[N],a[N];
std::map<vector<int>,int> mp;
vector<int> vec;
std::map<vector<int>,int>::iterator iter;
int calc(char ch)
{
	if ('a'<=ch&&ch<='z') return ch-'a';
	if ('A'<=ch&&ch<='Z') return ch-'A'+26;
	return ch-'0'+52;
}
int main()
{
	//freopen("D.in","r",stdin);
	while (cin>>st)
	{
		mp.clear();
		for (int i=0; i<=61; i++) f[i]=0;
		int n=st.length();
		for (int i=0; i<n; i++)
		{
			int x=calc(st[i]);
			f[x]=1; 
		}
		int ans=0;
		for (int i=0; i<n; i++)
			for (int j=i; j<n; j++)
			{
				bool flag=1; int l=j-i+1;
				if (l==n) continue;
				for (int k=0; k<=61; k++) a[k]=0;
				for (int k=i; k<=j; k++)
				{
					int x=calc(st[k]);
					a[x]++;
				}
				for (int k=0; k<=61; k++)
					if (f[k]&&(!a[k])){flag=0; break;}
				int x=calc(st[i]),y=calc(st[j]);
				if (a[x]>1||a[y]>1) flag=0;
				if (flag) 
				{
					vec.clear();
					for (int k=i; k<=j; k++) vec.push_back(calc(st[k]));
					iter=mp.find(vec);
					if (iter==mp.end()) ans++;
					mp.insert(std::pair<vector<int>,int>(vec,1));
				}
			}
		printf("%d\n",ans);
	}
	return 0;
}
/*
aabbabb
abAB34aB3ba7
104001144
aaabcaaa
a
bb
bd
123456
*/