#include <string.h>
struct code{
char str[110];
int sum;
}node[100];
int main()
{
char a[110]={0},b[110]={0},copy[100][22],str1[8][22];
memset(str1, 0, sizeof(str1));
memset(copy, 0, sizeof(copy));
int cet=0,flag=0,x[8]={0},i,j,num=0,top=0,cosum[100]={0};
for(i=0;i<100;i++)
node[i].sum=1;
while(fgets(b, 110, stdin))
{
memset(a,0, 110);
for(i=strlen(b)-1;i>=0;i--)
{
if(b[i]==92)
break;
}
for(j=i;j<strlen(b);j++)
{
a[j-i]=b[j];
}
for(i=0;i<cet;i++)
{
if(strcmp(a,node[i].str)==0)
{flag=1;
node[i].sum++;
}
}
if(flag==0)
{
strcpy(node[cet++].str, a);
memset(a, 0,110);
}
else
flag=0;
}
for( i=cet-1;i>=0;i--)
{
for(j=strlen(node[i].str)-1;j>=0;j--)
{
if(node[i].str[j]==92||strlen(node[i].str)-1-j>=21)
break;
}
for(int k=j+1;k<strlen(node[i].str);k++)
{
copy[num][k-j-1]=node[i].str[k];
cosum[num]=node[i].sum;
}
num++;
}
flag=0;
for(i=0;i>-1;i++)
{
if(copy[i][0]==0||top>7)
break;
for(j=0;j<top+1;j++)
{
if(strcmp(str1[j],copy[i])==0)
{
x[j]=x[j]+cosum[i];
flag=1;
break;
}
}
if(flag==0)
{
x[top]=cosum[i];
strcpy(str1[top++],copy[i]);
}
else
flag=0;
}
for(int k=i;k>=0;k--)
{num=0;
while(1)
{
if(str1[k][num]=='\n')
{
str1[k][num]=0;
break;
}
else
num++;
}
}
for(j=top-1;j>=0;j--)
printf("%s %d\n",str1[j],x[j]);
}