Skip to main content
LeetCode 1087, Medium. Topics: String, Backtracking, Breadth-First Search. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 12 parametrized pytest cases, and a playground notebook:

Problem

You are given a string s representing a list of words. Each letter in the word has one or more options.
  • If there is one option, the letter is represented as is.
  • If there is more than one option, then curly braces delimit the options. For example, "{a,b,c}" represents options ["a", "b", "c"].
For example, if s = "a{b,c}", the first character is always 'a', but the second character can be 'b' or 'c'. The original list is ["ab", "ac"]. Return all words that can be formed in this manner, sorted in lexicographical order.

Examples

Constraints

  • 1 <= s.length <= 50
  • s consists of curly brackets ’{}’, commas ’,’, and lowercase English letters.
  • s is guaranteed to be a valid input.
  • There are no nested curly brackets.
  • All characters inside a pair of consecutive opening and ending curly brackets are different.

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

NeetCode All.
Last modified on September 7, 2026