# Abre la cerradura Tienes un candado frente a ti con 4 ruedas circulares. Cada rueda tiene 10 ranuras: `'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'`. Las ruedas pueden girar libremente y girar: por ejemplo, podemos convertir `'9'` en `'0'` o `'0'` en `'9'`. Cada movimiento consiste en girar una rueda en la ranura. La cerradura comienza inicialmente en '0000', una cadena que representa el estado de las 4 ruedas. Se le da una lista de callejones sin salida, lo que significa que si la cerradura muestra alguno de estos códigos, las ruedas de la cerradura dejarán de girar y no podrá abrirla. Dado un objetivo que representa el valor de las ruedas que desbloquearán la cerradura, devuelva el número total mínimo de vueltas necesarias para abrir la cerradura, o ``-1`` si es imposible. ## Ejemplo 1: ### Input: `deadends = ["0201", "0101", "0102", "1212", "2002"]` `target = "0202"` ### Output: 6 ### Explicación: Una secuencia de movimientos válidos sería `"0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202"`. Tenga en cuenta que una secuencia como `"0000" -> "0002" ->` <span style="color:red"> `"0102"`</span>` -> "0202"` no sería válida, porque las ruedas de la cerradura se atascan después de que la secuencia se convierte en el deadends(callejón sin salida) `"0102"`. ## Ejemplo 2: #### Input: `deadends = ["8888"] ` `target = "0009"` #### Output: 1 #### Explicación: Podemos girar la última rueda en reversa para pasar de `"0000" -> "0009".` ## Ejemplo 3: ### Input: `deadends: ["8887", "8889", "8878", "8898", "8788", "8988", "78880," 9888 "]` `target = "8888"` ### Output: -1 ### Explicación: No podemos alcanzar el objetivo sin atascarnos. ## Ejemplo 4: ### Input: `deadends = ["0000"]` `target = "8888"` ### Output: -1 ## Restricciones: * `1 <= deadends.length <= 500` * `deadends[i].length == 4` * `target.length == 4` * `target no estará en la lista de deadends` * `target and deadends[i] constan solo de dígitos.` ```typescript= /* * Typescript Scaffolding */ function openLock(deadends: string[], target: string): number { //your code } //Test let deadends = ["8887", "8889", "8878", "8898", "8788", "8988", "78880", "9888 "] let target = 8888 openLock(deadends, target) //-> should return -1 ```