#include <climits>
#include <iostream>
#include<map>
#include<bits/stdc++.h>
#include<string>
using namespace std;
struct ele
{
    char ch ;
    int order ; 
} ; 
template <class T>
class comp
{
    public :
     bool operator()(const T & lhs , const T & rhs)
     {
        return lhs.ch <rhs.ch ; 
     }
} ; 
int main() {
    // vector<ele> s ; 
    // string ts ; 

    // cin>> ts ; 
    // // if(ts.size() == 1)
    // // {

    // // }
    // ele it ; 
    // for(int i = 0 ; i < ts.size() ;++ i )
    // {
    //     it.ch = ts[i] ; 
    //     it.order = i ; 
    //     s.push_back(it) ; 
    // }
    // sort(s.begin() , s.end() , comp<ele>() ) ;
    // // for(auto it: s)
    // // {
    // //     cout<<it.ch<<endl ; 
    // // }
    // int st = 0 ; 
    // for(int i = 1; i<s.size() ; ++ i )
    // {
    //     if(s[i].ch == s[i-1].ch)
    //     {

    //     }
    //     else 
    //     {
    //         if(i-st <= 1)
    //         {
    //             st = i ; 
    //         }
    //         else {
    //             while(st < i)
    //             {
    //                 cout<<s[st].ch<<":"<<s[st].order<<","; 
    //                 st++ ; 
    //             }
    //             st = i ; 
    //         }
    //     }
    //     if(i -st >1 )
    //     {
    //         while(st <= i)
    //         {
    //             cout<<s[st].ch<<":"<<s[st].order<<"," ; 
    //             st++ ; 
    //         }
    //     }

    // }
    vector<ele> st;
    map<char , vector<int>> mp ; 
    string s ; 
    cin>>s ; 
    for(int i = 0 ; i < s.size() ; ++ i)
    {
        
        mp[s[i]].push_back(i);
            // auto it = mp.find(s[i]) ; 
            // vector<int> tmp = it->second  ; 
            // cout<<"tmp.size()"<<tmp.size()<<endl  ; 
            // if(tmp.size() <=2)
            // {
            //     ele it ; 
            //     if(tmp.size()  == 1)
            //     {
            //     it.ch = s[i] ; 
            //     it.order = tmp[0] ; 
            //     cout<<"it.ch:"<<it.ch<<endl  ;
            //     st.push_back(it) ; 
            //     }
            //     if(tmp.size()  == 2)
            //     {
            //     it.ch = s[i] ; 
            //     it.order = tmp[1] ; 
            //     cout<<"it.ch"<<it.ch ; 
            //     st.push_back(it) ; 
            //     }
            // }
            // else 
            // {
            //     ele it ; 
            //     it.ch = s[i] ; 
            //     it.order = i ; 
            //     cout<<"it.ch "<<it.ch<<endl  ; 
            //     st.push_back(it) ; 
            // }
        

    }
    // for(auto it : mp)
    // {
    //     for(int i = 0 ; i < it.second.size() ; ++ i)
    //     {
    //         cout<<it.first<<":"<<it.second[i] <<endl ; ; 
    //     }
    // }
  
  //要安装位置顺序 输出 此时我们已经有了 每个字母的位置 , 继续遍历对每个字母看是否有 
    for(int i = 0 ; i < s.size() ;++ i )
    {
        if(mp[s[i]].size() >1 && mp[s[i]][0]!=INT_MAX ) // 对应mp键的大小大于 1 并且没有访问过 
        {
            for(int j = 0 ; j < mp[s[i]].size() ; ++ j)
            {
                if( j ==mp[s[i]].size() -1 )
                {
                   cout<<s[i]<<":"<<mp[s[i]][j]<<endl ; 
                   break ;  
                }
                cout<<s[i]<<":"<<mp[s[i]][j]<<","   ;             
            }
            mp[s[i]][0] = INT_MAX  ; 
        }
    }

}
// 64 位输出请用 printf("%lld")