A Joana trabalha num laboratório de genética, e é uma das melhores investigadoras na sua área. Neste momento está a trabalhar com umas cadeias de DNA muito especiais que apenas contêm 2 tipos de nucleótidos! Uma cadeia de DNA é simplesmente uma sequência de carateres. Para simplificar, denominámos as bases de 'A' e 'T'.
Mais especificamente, a Joana está a estudar a maneira como estas bases se ligam. Para isso, precisa de contar o número de ligações nucleares 'AT' que aparecem na cadeia, isto é, o número de vezes que um caráter 'A' aparece antes de um 'T' em qualquer posição não necessariamente adjacente. Por exemplo, para AATAT esse número seria 5, pois os 2 primeiros A's tem 2 T's à frente e último apenas 1, sendo a resposta 2+2+1=5. A imagem seguinte mostra as ligações:
Infelizmente, a Joana também comete erros, e no processo de análise do DNA deixou cair a única amostra que tinha, perdendo parte desta. Desta forma, não tem a informação toda que necessita para terminar o seu estudo. Mas eis que aparece a sua salvação, tu e as tuas habilidades de programador podem ajudá-la!
A Joana precisa de informação sobre a cadeia original, e a única coisa que sabe, após olhar para o que resta, é que esta era a que maximizava o número de ligações nucleares 'AT'. Por exemplo, se a cadeia fosse T?A?TA?A o valor pretendido seria 7, obtido a partir da cadeia TAATTATA.
Dada a cadeia incompleta da Joana, consegues ajudá-la a obter informação sobre a sua cadeia original, ou seja, o número de ligações 'At' da cadeia que as maximiza?
Dado uma cadeia de DNA com N carateres 'A', 'T' ou '?' calcular o número máximo de ligações nucleares quando substituimos os '?' por 'A' ou 'T'.
O input consiste apenas em duas linhas. Na primeira linha o tamanho N da cadeia. Na segunda uma linha com N carateres.
Uma linha com o valor pedido.
São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:
N ≤ 1 000 000 | Tamanho da linha |
A resposta pode ir até 2^62.
Os casos de teste deste problema estão organizados em 6 grupos com restrições adicionais diferentes:
Grupo | Número de Pontos | Restrições adicionais |
---|---|---|
1 | 10 | N ≤ 2000 e no máximo 1 caráter é '?' |
2 | 10 | No máximo 1 caráter é '?' |
3 | 10 | N ≤ 20 |
4 | 10 | Todos os carateres são '?' |
5 | 20 | N ≤ 2000 |
6 | 40 | - |
8 T?A?TA?A
7
Este exemplo corresponde ao mencionado no enunciado.
5 AATAT
5
5 ?????
6