Hoy me ha parecido muy fácil, usando conjuntos.
Un par de one-liners en Python:
with open("input6.txt") as f:
inp = f.read().splitlines()[0]
# Part 1
print([i for i in range(4, len(inp)) if len(set(inp[i-4:i]))==4][0])
# Part 2
print([i for i in range(14, len(inp)) if len(set(inp[i-14:i]))==14][0])
Añadido:
Solo por diversión, un one-liner (un poco largo, eso sí) que saca los valores de ambas partes, incluyendo la lectura del fichero de texto:
print(list(map((lambda inp: lambda n: [i for i in range(n, len(inp)) if len(set(inp[i-n:i]))==n][0])(open("input6.txt").read().splitlines()[0]), [4,14])))