#include<iostream>
#include<string>
#include<vector>
#include<sstream>
#include<algorithm>
using namespace std;
string formal(string s){
string ans = "";
for(int i=0;i<s.length();i++){
if(s.at(i) == '0' || s.at(i) == '1'){
ans += s.at(i);
}
if(s.at(i) == 'A' || s.at(i) == 'B' || s.at(i) == 'C' || s.at(i) == '2' ){
ans += '2';
}
if(s.at(i) == 'D' || s.at(i) == 'E' || s.at(i) == 'F' || s.at(i) == '3' ){
ans += '3';
}
if(s.at(i) == 'G' || s.at(i) == 'H' || s.at(i) == 'I' || s.at(i) == '4' ){
ans += '4';
}
if(s.at(i) == 'J' || s.at(i) == 'K' || s.at(i) == 'L' || s.at(i) == '5' ){
ans += '5';
}
if(s.at(i) == 'M' || s.at(i) == 'N' || s.at(i) == 'O' || s.at(i) == '6' ){
ans += '6';
}
if(s.at(i) == 'P' || s.at(i) == 'R' || s.at(i) == 'S' || s.at(i) == '7' ){
ans += '7';
}
if(s.at(i) == 'T' || s.at(i) == 'U' || s.at(i) == 'V' || s.at(i) == '8' ){
ans += '8';
}
if(s.at(i) == 'W' || s.at(i) == 'X' || s.at(i) == 'Y' || s.at(i) == '9' ){
ans += '9';
}
}
ans.insert(3,"-");
return ans;
}
bool compare(string s1,string s2){
for(int i=0;i<s1.length();i++){
if(s1.at(i) < s2.at(i)){
return true;
} else if(s1.at(i) == s2.at(i)){
}else{
return false;
}
}
return true;
}
int main(void){
int test;
cin>>test;
vector<string> v;
vector<int> vi;
for(int t=0;t<test;t++){
string x;
cin>>x;
string y = formal(x);
int contain = -1;
for(int i=0;i<v.size();i++){
if(v[i] == y)
contain = i;
}
//还不存在
if(contain == -1){
v.push_back(y);
vi.push_back(1);
}
//已经存在
else{
vi[contain] = vi[contain] + 1;
}
}
/**for(int i=0;i<v.size();i++){
cout<<v[i]<<" " <<vi[i]<<endl;
}**/
vector<string> temp;
for(int i=0;i<v.size();i++){
stringstream ss;
ss<<vi[i];
v[i] = v[i] + " " + ss.str();
if(vi[i] > 1)
temp.push_back(v[i]);
}
sort(temp.begin(),temp.end(),compare);
for(int i=0;i<temp.size();i++){
cout<<temp[i]<<endl;
}
if(temp.size() == 0){
cout<<"No duplicates."<<endl;
}
system("pause");
return 0;
}
#include<string>
#include<vector>
#include<sstream>
#include<algorithm>
using namespace std;
string formal(string s){
string ans = "";
for(int i=0;i<s.length();i++){
if(s.at(i) == '0' || s.at(i) == '1'){
ans += s.at(i);
}
if(s.at(i) == 'A' || s.at(i) == 'B' || s.at(i) == 'C' || s.at(i) == '2' ){
ans += '2';
}
if(s.at(i) == 'D' || s.at(i) == 'E' || s.at(i) == 'F' || s.at(i) == '3' ){
ans += '3';
}
if(s.at(i) == 'G' || s.at(i) == 'H' || s.at(i) == 'I' || s.at(i) == '4' ){
ans += '4';
}
if(s.at(i) == 'J' || s.at(i) == 'K' || s.at(i) == 'L' || s.at(i) == '5' ){
ans += '5';
}
if(s.at(i) == 'M' || s.at(i) == 'N' || s.at(i) == 'O' || s.at(i) == '6' ){
ans += '6';
}
if(s.at(i) == 'P' || s.at(i) == 'R' || s.at(i) == 'S' || s.at(i) == '7' ){
ans += '7';
}
if(s.at(i) == 'T' || s.at(i) == 'U' || s.at(i) == 'V' || s.at(i) == '8' ){
ans += '8';
}
if(s.at(i) == 'W' || s.at(i) == 'X' || s.at(i) == 'Y' || s.at(i) == '9' ){
ans += '9';
}
}
ans.insert(3,"-");
return ans;
}
bool compare(string s1,string s2){
for(int i=0;i<s1.length();i++){
if(s1.at(i) < s2.at(i)){
return true;
} else if(s1.at(i) == s2.at(i)){
}else{
return false;
}
}
return true;
}
int main(void){
int test;
cin>>test;
vector<string> v;
vector<int> vi;
for(int t=0;t<test;t++){
string x;
cin>>x;
string y = formal(x);
int contain = -1;
for(int i=0;i<v.size();i++){
if(v[i] == y)
contain = i;
}
//还不存在
if(contain == -1){
v.push_back(y);
vi.push_back(1);
}
//已经存在
else{
vi[contain] = vi[contain] + 1;
}
}
/**for(int i=0;i<v.size();i++){
cout<<v[i]<<" " <<vi[i]<<endl;
}**/
vector<string> temp;
for(int i=0;i<v.size();i++){
stringstream ss;
ss<<vi[i];
v[i] = v[i] + " " + ss.str();
if(vi[i] > 1)
temp.push_back(v[i]);
}
sort(temp.begin(),temp.end(),compare);
for(int i=0;i<temp.size();i++){
cout<<temp[i]<<endl;
}
if(temp.size() == 0){
cout<<"No duplicates."<<endl;
}
system("pause");
return 0;
}