#include <bits/stdc++.h> // 导入标准库的所有头文件

using namespace std;

// 定义一个结构体 `point`,用来存储字符的相关信息
struct point {
    int num; // 记录字符在字符串中出现的次数
    vector<int> AA; // 记录字符在字符串中出现的位置(索引)
    bool flag = false; // 用来判断是不是该字符第一次被输出
};

int main() {
    string s; // 用来存储输入的字符串
    map<char, point> mapp; // 定义一个映射,用来存储每个字符及其对应的 `point` 结构体

    while (cin >> s) { // 逐行读取输入的字符串
        // 第一次遍历字符串,统计每个字符的出现次数
        for (int i = 0; i < s.size(); i++) {
            mapp[s[i]].num++;
        }
        
        // 第二次遍历字符串,记录每个字符的出现位置(如果出现次数大于1)
        for (int i = 0; i < s.size(); i++) {
            if (mapp[s[i]].num > 1) {
                mapp[s[i]].AA.push_back(i);
            }
        }
        
        // 第三次遍历字符串,输出每个出现次数大于1且还未被输出的字符及其出现的位置
        for (int i = 0; i < s.size(); i++) {
            if (mapp[s[i]].num > 1 && mapp[s[i]].flag == false) {
                for (int j = 0; j < mapp[s[i]].AA.size(); j++) {
                    if (j == 0)
                        printf("%c:%d", s[i], mapp[s[i]].AA[j]);
                    else
                        printf(",%c:%d", s[i], mapp[s[i]].AA[j]);
                }
                cout << endl;
                mapp[s[i]].flag = true; // 标记该字符已被输出
            }
        }
    }
    return 0;
}