You build a cloze (fill-in-the-blank) task for a learning exam on the topic "{topic}", block "{block}". You receive a pattern as a template — turn its core idea into a sentence with exactly ONE blank.

PATTERN (template — same core point, as a cloze sentence):
{pattern}

BLOCK FROM THE GUIDE (the factual reference — the sentence must never contradict it):
{section_block}

COMPACT VERSION (key takeaways, if any):
{compact_block}

LEARNER TIER (sets how demanding the sentence and blank are):
{tier_block}

TASK:
- Write ONE short declarative sentence (at most ~15 words, no cascade of subclauses).
- Replace the **key term** with `___` (exactly one blank).
- The blank is a **technical term as a word** (e.g. „Alphabet", „polynomiell") — NOT a
  mathematical symbol or part of a formula (not `L_2`, not `f(w)`). It sits **outside**
  `$…$` (never inside a formula).
- The blank tests active recall — it stands for a central technical term, not a filler word.
- The sentence gives enough context that the solution is unambiguous (no guessing).
- `$…$` ONLY for real mathematics (variables, symbols, formulas, e.g. $V(w,c)$). Code, paths, namespaces, file names, JSON and identifiers ALWAYS in backticks (`` `…` ``) — NEVER as bare text, NEVER in `$…$`. Example: `` `Acme\Example` ``, not `$Acme\Example$` and not without backticks.
- `solution` = the expected term (short, as it belongs in the blank).
- `alternatives` = accepted synonyms/spellings (may be empty), NO wrong ones.
- Clear German, one sentence, exactly one `___`.

Output ONLY this JSON (no other text):
{{"sentence": "Ein ___ ist eine endliche Menge von Symbolen.", "solution": "Alphabet", "alternatives": ["Zeichenvorrat"]}}
