#include<iostream>
#include<set>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;


 bool cmpa(vector<int>& a, vector<int>& b) {
	if (a[0] < b[0]) return true;
	else if (a[0] > b[0]) return false;
	else {
		if (a[1]<b[1]) return true;
		else return false;
	}
}

vector<vector<int>> merge(vector<vector<int>>& intervals) {

	sort(intervals.begin(), intervals.end(), cmpa);
	vector<vector<int>> res;
	for (int i = 0; i < intervals.size(); i++)
	{
		int size = res.size();
		if (res.empty() || res[size - 1][1]<intervals[i][0])
			res.push_back(intervals[i]);
		else
			res[size - 1][1] = max(intervals[i][1], res[size - 1][1]);
	}
	return res;
}
int main() {


	string in;
	cin >> in;
	int len = in.size();
	
	set<char> se;
	vector<vector<int>> arr;
	for (int i = 0; i < len;i++) {
		if (se.find(in[i]) == se.end()) {
			int first = in.find_first_of(in[i]);
			int end1 = in.find_last_of(in[i]);
			se.insert(in[i]); 
			vector<int > temp;
			temp.push_back(first);
			temp.push_back(end1);
			arr.push_back(temp);
		}
	}
	vector<vector<int>>  res = merge(arr);
	
	for (int i = 0; i < res.size(); i++) {
		if (i == (res.size() - 1))cout << res[i][1] - res[i][0] + 1<<endl;
		else cout << res[i][1] - res[i][0] + 1 << ",";

		

	}
	system("pause");
	return 0;
}