#include<string>
using namespace std;
int main()
{
string s;
while(cin>>s)
{
int judge=0; //判断是否执行输出操作(即判断到目前为止,是否有重复字符)
int a[s.length()];
//a[x]用来存储重复的字符,而x用来存储重复字符在字符串中的下标(a[]与s[]的元素个数相同且一一对应
//给a[] 赋初值0,后面将用作是否输出的依据之一
for(int i=0;i<s.length();i++)
{
a[i]=0;
}
for(int i=0;i<s.length()-1;i++)
{
//第一层循环,遍历除最后一个以外每一个字符元素,并用来输出每一个重复的字符
int douhao=0; //开始自己的输出虽然数据对了,但无法在正确位置输出逗号,后用此变量控制对逗号的输出
//第二层循环,即核心循环,如果判断两个字符相等且未被录入a[],那么将【字符下标+1】存储在数组a的对应位置中
for(int j=i+1;j<s.length();j++)
{
if(s[i]==s[j]&&(a[i]==0||a[j]==0))
{
judge=1;
a[i]=a[j]=i+1;
}
}
//输出结果,一次输出一种重复字符
if(judge==1)
{
judge=0;
for(int x=0;x<s.length();x++)
{
if(a[x]!=0&&a[x]!=-1)
{
if(douhao==0)
{
cout<<s[a[x]-1]<<':'<<x;
a[x]=-1;
}
else if(douhao==1)
{
cout<<','<<s[a[x]-1]<<':'<<x;
a[x]=-1;
}
douhao=1;
}
}
cout<<endl;
}
}
}
}