O Alberto está a programar um robot que verifica se um baralho de cartas está completo e já escreveu um programa que reconhece as cartas.
Por uma questão de simplicidade, podemos assumir que todas as cartas têm um naipe (ouros, copas, paus ou espadas, indicados respetivamente pelos caracteres 'O','C','P' ou 'E') e um valor (um número entre 1 e 13). O robot consegue classificar cada carta no formato NXY, onde N é o naipe e XY o número (se o valor tiver apenas um dígito, então X=0. Por exemplo, um 9 de paus é indicado como P09.
Um baralho completo tem exactamente 52 cartas: para cada um dos quatro naipes, existem 13 cartas, uma para cada um dos valores possíveis entre 1 e 13.
O robot já conseguiu reconhecer todas as cartas no baralho e juntou-as numa string S. Ajuda o Alberto a completar a sua tarefa e implementa um programa que lê a string feita de cartas no formato descrito e escreve quantas cartas faltam em cada naipe.
Se existirem duas cartas iguais no baralho, deves escrever simplesmente "ERRO".
Na primeira linha de input vem um inteiro C indicando o número de casos a considerar.
Seguem-se C linhas, cada uma contendo uma string Si no formato atrás descrito, correspondendo a um baralho lido pelo robot.
C linhas, uma para cada um dos baralhos lidos, pela mesma ordem em que aparecem no input. Se existirem duas cartas iguais, o output deve ser "ERRO". Caso contrário, a linha deve conter quatro inteiros (separados por um espaço): o número de cartas que faltam de 'O','C','P' e 'E', respetivamente.
São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:
3 ≤ Si < 1 000 | Tamanho de uma string descrevendo um baralho |
Não existem grupos de teste com restrições adicionais.
3 O01C02P03P04 C02P10E11C02 E10O10E01E03E05
12 12 11 13 ERRO 12 13 13 9
No primeiro caso, o robot lê uma carta de 'O', uma de 'C' e duas de 'P'.
No segundo caso existem duas cartas de 'C' com o mesmo valor (2), logo é devolvido um erro.
No terceiro caso é lida uma carta de 'O' e três cartas de 'E'.