Você está lutando contra uma extensa rede de espiões inimigos . Você sabe que cada espião tem pelo menos uma (às vezes várias) identidades falsas que eles gostam de usar. Você realmente gostaria de saber com quantos espiões está lidando.
Felizmente, seus agentes de contra-inteligência estão fazendo seu trabalho e, às vezes, podem descobrir quando duas identidades falsas são realmente controladas pelo mesmo espião inimigo.
Ou seja:
- Seus agentes nem sempre sabem quando duas identidades falsas têm o mesmo espião, no entanto
- Se um agente lhe disser que duas identidades falsas são controladas pelo mesmo espião, você confia que elas estão certas.
Mensagens do agente
Os agentes enviam mensagens enigmáticas informando quais identidades têm o mesmo espião por trás delas. Um exemplo:
Você tem 2 agentes e 5 identidades falsas para lidar.
O primeiro agente envia uma mensagem para você:
Red Red Blue Orange Orange
Isso significa que eles acham que existem três espiões:
- o primeiro (vermelho) controla as identidades 1 e 2
- o segundo (azul) controla a identidade 3
- o terceiro (laranja) controla as identidades 4 e 5
O segundo agente envia uma mensagem:
cat dog dog bird fly
Isso significa que eles acham que existem 4 espiões:
- o primeiro (gato) controla a identidade 1
- o segundo (cão) controla as identidades 2 e 3
- o terceiro (pássaro) controla a identidade 4
- o quarto (mosca) controla a identidade 5
Compilando as informações que vemos:
Identities: id1 id2 id3 id4 id5
Agent 1: |--same-spy--| |--same-spy--|
Agent 2: |--same-spy--|
Conclusion: |-----same-spy------||--same-spy--|
Isso significa que existem no máximo 2 espiões .
Notas
As identidades pertencentes ao mesmo espião não precisam ser consecutivas, ou seja, uma mensagem como:
dog cat dog
é válido.
Além disso, a mesma palavra pode ser usada por dois agentes diferentes - isso não significa nada, é apenas uma coincidência, por exemplo:
Agent 1: Steam Water Ice
Agent 2: Ice Ice Baby
O gelo é usado pelos dois agentes - o Ice
usado pelo primeiro agente não tem relação com as duas ocorrências Ice
usadas pelo segundo agente.
Desafio
Compile as informações de todos os seus agentes e descubra quantos espiões inimigos existem realmente. (Para ser mais preciso, obtenha o limite superior mais baixo, considerando as informações limitadas que você possui.)
O código mais curto em bytes vence.
Especificação de entrada e saída
A entrada é uma lista de n linhas, que representam n mensagens de agentes. Cada linha consiste em k tokens separados por espaço, o mesmo k para todas as linhas. Os tokens são de comprimento alfanumérico e arbitrário. O caso é importante.
A saída deve ser um número único, representando o número de espiões distintos, com base nas informações dos seus agentes.
Exemplos
Exemplo 1
Entrada:
Angel Devil Angel Joker Thief Thief
Ra Ra Ras Pu Ti N
say sea c c see cee
Saída:
2
Exemplo 2
Entrada:
Blossom Bubbles Buttercup
Ed Edd Eddy
Saída:
3
Exemplo 3
Entrada:
Botswana Botswana Botswana
Left Middle Right
Saída:
1
Exemplo 4
Entrada:
Black White
White Black
Saída:
2
Exemplo 5
Entrada:
Foo Bar Foo
Foo Bar Bar
Saída:
1
Exemplo 6
Entrada:
A B C D
A A C D
A B C C
A B B D
Saída:
1
Exemplo 7
Entrada:
A B A C
Saída:
3
Exemplo 8
Entrada:
A
B
C
Saída:
1
Exemplo 9
Entrada:
X
Saída:
1