Agregar un dígito (0-9) a la secuencia / cadena crea un nuevo número de 4 dígitos

Estoy intentando encontrar un algoritmo que "rompe la caja fuerte" escribiendo las teclas 0-9. El código tiene 4 dígitos. La caja fuerte estará abierta donde identifica el código como subcadena de la escritura. es decir, si el código es "3456", la siguiente escritura abrirá la caja fuerte: "123456". (Solo significa que la caja fuerte no se reinicia cada entrada de 4 teclas).

¿Hay algún algoritmo que, cada vez que agregue un dígito a la secuencia, cree un nuevo número de 4 dígitos (nuevas combinaciones de los últimos 4 dígitos de la secuencia \ cadena)?

gracias, km

Edición (la publico hace años): la pregunta es cómo asegurarse de que cada vez que establezca una entrada (un dígito) en la caja fuerte, genere un nuevo código de 4 dígitos que no se generó antes. Por ejemplo, si la caja fuerte obtiene un código binario con 3 dígitos, esta debería ser mi secuencia de entrada:

0001011100 

Porque por cada entrada obtengo un nuevo código (3 dígitos de longitud) que no se generó antes:

000 -> 000
1 -> 001
0 -> 010
1 -> 101
1 -> 011
1 -> 111
0 -> 110
0 -> 100