You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'.

Each move consists of turning one wheel one slot. The lock initially starts at '0000', a string representing the state of the 4 wheels.

You are given a list of deadends, meaning if the lock displays any of these codes, the wheels of the lock will stop turning and you will be unable to open it.

Given a target representing the value of the wheels that will unlock the lock, return the minimum total number of turns required to open the lock, or -1 if it is impossible.

Input & Output

Example 1 — Basic Case
$ Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202"
Output: 6
💡 Note: One shortest path: 0000 → 1000 → 1100 → 1200 → 1201 → 1202 → 0202. Each step turns one wheel by one position, avoiding all deadends.
Example 2 — Blocked Start
$ Input: deadends = ["8888"], target = "0009"
Output: 1
💡 Note: Simple case: 0000 → 0009 (turn the last wheel once from 0 to 9). The deadend 8888 doesn't affect this path.
Example 3 — Impossible Case
$ Input: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"
Output: -1
💡 Note: All neighbors of target 8888 are deadends, making it unreachable from 0000.

Constraints

  • 1 ≤ deadends.length ≤ 500
  • deadends[i].length == 4
  • target.length == 4
  • target will not be in the list deadends
  • target and deadends[i] consist of digits only

Visualization

Tap to expand
Open the Lock: Find Shortest PathStart0000Target0202Deadends (Forbidden)0201 0101 01021212 2002Lock stops if any of thesecombinations are reached1000110012001201Path: 0000 → 1000 → 1100 → 1200 → 1201 → 1202 → 0202Minimum Turns: 6Each wheel can rotate 0→1→2...→9→0 (circular)BFS explores all possibilities level by level to guarantee shortest path
Understanding the Visualization
1
Input
Lock starts at '0000', avoid deadends, reach target '0202'
2
Process
BFS explores shortest paths by trying all wheel rotations
3
Output
Minimum 6 turns needed to reach target
Key Takeaway
🎯 Key Insight: Model as graph problem where BFS finds shortest unweighted path while avoiding forbidden states
Asked in
Amazon 15 Google 12 Microsoft 8 Facebook 6
48.0K Views
Medium Frequency
~25 min Avg. Time
1.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen