Caracteres válidos em uma String

Recebi uma string e tenho que retornar False se houver um ou mais caracteres inválidos, caso contrário, True. A ressalva é que eu só posso funções internas e operações str (por exemplo: in, +, indexação, len) e recursão. O que tenho até agora não está funcionando:

def is_valid_sequence(dna):
""" (str) -> bool

Return True if and only if the DNA sequence is valid
(A, T, C, and G)
:param dna: string sequence
:return: true or false
>>> is_valid_sequence('ATTAC')
True
>>> is_valid_sequence('FBSSS')
False
"""
valid_seq = 0

if len(dna) == 1 and dna in ['A', 'T', 'C', 'G']:
        valid_seq += 1
else:
    return is_valid_sequence(dna[1:])

Obviamente, esse código não funciona por causa da recursão e adição de 1 aovalid_seq A variável é limpa apenas após a próxima iteração recursiva.

questionAnswers(2)

yourAnswerToTheQuestion