```
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
const int N=100010;
typedef long long LL;
int n;
char str[N];
int l[N],r[N],p[26];
int main()
{
scanf(“%s”,str+1); // 从输入中读取字符串
n= strlen(str+1); // 计算字符串的长度
for(int i=1;i<=n;i)
{
int t=str[i]-‘a’; // 计算字符i的ASCII码值
l[i]=p[t]; // l[i]的值是字符i上一次出现的位置
p[t]=i; // 更新字符i的位置
}
for(int i=0;i<26;i) p[i]=n+1; // 初始化p数组
for(int i=n;i;i–)
{
int t=str[i]-‘a’; // 计算字符i的ASCII码值
r[i]=p[t]; // r[i]的值是字符i上一次出现的位置
p[t]=i; // 更新字符i的位置
}
LL res=0; // 初始化结果
for(int i=1;i<=n;i++)
{
res+=(LL)(i-l[i])*(r[i]-i); // 计算每个字符的左边和右边的距离的乘积的和
}
cout<<res<<endl; // 输出结果
return 0;
}