#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
//使用字符数组保存输入字符串
//使用map记录字符和出现位置的键值对,出现位置可能多个用动态数组保存
//用动态数组记录第一次出现的字符
//根据字符出现顺序打印出字符:位置

int main() {
    char str[100] = { 0 };
    map<char, vector<int>>  map1;
    vector<char> vec1(100);

    while (scanf("%s", str) != EOF) {
        for (int i = 0; str[i] != '\0'; i++) {
            //若map1中没有{str[i],{i}}键值对,会自动创建
            map1[str[i]].push_back(i);
            //如果该字符第一次出现
            if (map1[str[i]].size() == 1) {
                vec1[i] = str[i];
            }
        }

        //打印
        vector<char>::iterator itchar;
        //按出现顺序遍历每个字符
        for (itchar = vec1.begin(); itchar != vec1.end(); itchar++) {
            {
                //仅打印重复出现的字符
                //*itchar是字符,map1[*itchar]表示字符对应的值(动态数组)
                if (map1[*itchar].size() > 1) {
                    printf("%c:%d", *itchar, map1[*itchar][0]);
                    for (int i = 1; i < map1[*itchar].size(); i++) {
                        printf(",%c:%d", *itchar, map1[*itchar][i]);
                    }
                    printf("\n");

                }

            }

        }
    }
    return 0;
}