#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;
			} 
		}

	}
}