# 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
```