{"id":10122,"date":"2025-09-26T14:26:18","date_gmt":"2025-09-26T08:56:18","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=10122"},"modified":"2025-09-26T14:53:49","modified_gmt":"2025-09-26T09:23:49","slug":"coin-change-top-down-recursive","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/coin-change-top-down-recursive\/","title":{"rendered":"Coin Change Top Down Recursive"},"content":{"rendered":"\n<!-- PrismJS for Syntax Highlighting -->\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism-tomorrow.min.css\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/autoloader\/prism-autoloader.min.js\"><\/script>\n\n<style>\n.wp_blog_theme {\n  --primary: #E58C32;\n  --secondary: #030302;\n  --light-bg: #fef9f4;\n  --text-dark: #2d2d2d;\n  --tab-radius: 12px;\n  --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n  --code-bg: #001f3f;\n  --code-text: #d4f1ff;\n}\n\n.wp_blog_container {\n  font-family: 'Segoe UI', sans-serif;\n  background: var(--light-bg);\n  margin: 0;\n  padding: 0;\n  color: var(--text-dark);\n}\n\n\/* Heading *\/\n.wp_blog_main-heading {\n  text-align: center;\n  font-size: 2.4rem;\n  color: var(--primary);\n  margin-top: 2.5rem;\n  font-weight: bold;\n}\n\n\/* Explanation Card *\/\n.wp_blog_explanation,\n.wp_blog_code-tabs-container {\n  max-width: 940px;\n  margin: 2rem auto;\n  padding: 2rem;\n  background: white;\n  border-radius: var(--tab-radius);\n  box-shadow: var(--shadow);\n}\n\n\/* Text and Visuals *\/\n.wp_blog_explanation h2 {\n  font-size: 1.4rem;\n  color: var(--primary);\n  margin-bottom: 0.5rem;\n}\n\n.wp_blog_explanation p,\n.wp_blog_explanation li {\n  font-size: 1.05rem;\n  line-height: 1.7;\n  margin: 0.5rem 0;\n}\n\n.wp_blog_explanation code {\n  background: #fef9f4;   \/* light bg instead of dark blue *\/\n  color: #E58C32;        \/* brand orange *\/\n  padding: 3px 6px;\n  border-radius: 4px;\n  font-family: 'Courier New', monospace;\n  font-weight: 600;      \/* optional, makes it pop *\/\n}\n\n.wp_blog_explanation img {\n  max-width: 100%;\n  border-radius: var(--tab-radius);\n  margin-top: 1rem;\n  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);\n}\n\n\/* Tab Buttons *\/\n.wp_blog_code-tabs-header {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-bottom: 1rem;\n}\n\n.wp_blog_code-tab-button {\n  padding: 0.6rem 1.2rem;\n  border: 1px solid var(--primary);\n  background: white;\n  color: var(--primary);\n  border-radius: 50px;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.wp_blog_code-tab-button:hover {\n  background: var(--secondary);\n}\n\n.wp_blog_code-tab-button.active {\n  background: var(--primary);\n  color: white;\n}\n\n\/* Code Content *\/\n.wp_blog_code-tab-content {\n  display: none;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n}\n\n.wp_blog_code-tab-content.active {\n  display: block;\n}\n\n.wp_blog_code-tab-content pre {\n  margin: 0;\n  padding: 1.5rem;\n  font-size: 1rem;\n  overflow-x: auto;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n  color: var(--code-text);\n}\n\n\/* Dark mode variables *\/\n.wp_blog_theme.dark-mode {\n  --light-bg: #121212;\n  --text-dark: #f5f5f5;\n  --shadow: 0 4px 12px rgba(255, 255, 255, 0.08);\n  --code-bg: #1e1e1e;\n  --code-text: #c5f0ff;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_explanation {\n  background: #1e1e1e;\n}\n\n\/* Dark mode code highlight *\/\n.wp_blog_theme.dark-mode .wp_blog_explanation code {\n  background: #333;\n  color: #ffd27f;\n}\n\n.wp_blog_theme {\n  position: relative; \/* makes it the reference for absolute children *\/\n}\n\n.wp_blog_toggle-btn {\n  position: absolute;\n  top: 1rem;\n  right: 1rem;\n  z-index: 9999;\n  padding: 0.5rem 0.8rem;\n  border-radius: 10%;\n  background: var(--primary);\n  color: white;\n  font-weight: bold;\n  cursor: pointer;\n  border: none;\n  box-shadow: var(--shadow);\n  transition: background 0.3s, transform 0.2s;\n}\n\n.wp_blog_toggle-btn:hover {\n  background: #cc772e;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_code-tabs-container {\n  background: #1e1e1e;\n}\n<\/style>\n\n<div class=\"wp_blog_container wp_blog_theme\">\n  <button id=\"blogNotesThemeToggle\" class=\"wp_blog_toggle-btn\">\ud83c\udf19<\/button>\n  <h1 class=\"wp_blog_main-heading\"><\/h1>\n\n  <div class=\"wp_blog_explanation\">\n    <h2>Problem Statement:<\/h2>\n    <p>\n        You are given an integer array <code>coins<\/code> representing coins of different denominations and an integer <code>amount<\/code> representing a total amount of money.\n    <\/p>\n\n    <p>\n        Return <i>the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return <code>-1<\/code>.<\/i>\n    <\/p>\n\n    <p>\n        You may assume that you have an infinite number of each kind of coin.\n    <\/p>\n\n\n    <h3>Example 1:<\/h2>\n    <p><strong>Input:<\/strong> coins = [1, 2, 5], amount = 11<\/p>\n    <p><strong>Output:<\/strong> 3<\/p>\n    <p><strong>Explanation:<\/strong>  11 = 5 + 5 + 1    <\/p>\n\n    <h3>Example 2:<\/h2>\n    <p><strong>Input:<\/strong> coins = [2], amount = 3<\/p>\n    <p><strong>Output:<\/strong> -1<\/p>\n\n    <p>Example 3:<\/p>\n    <p><strong>Input:<\/strong> coins = [1], amount = 0<\/p>\n    <p><strong>Output:<\/strong> 0<\/p>\n\n    <h3>Constraints<\/h3>\n    <ul>\n       <li><code>1 <= coins.length <= 12<\/code><\/li>\n       <li><code>1 <= coins[i] <= 2<sup>31<\/sup> - 1<\/code><\/li>\n       <li><code>0 <= amount <= 10<sup>4<\/sup><\/code><\/li>\n    <\/ul>\n    \n<h2>Approach:<\/h2>\n<ul>\n    <li><strong>Use recursion<\/strong> (fn(remAmount)) to try reducing the amount by picking <strong>each coin<\/strong>.<\/li>\n    <li><strong>Base cases:<\/strong>\n    <ul>\n        <li>If <code>remAmount == 0<\/code>, no coins are needed \u2192 return <code>0<\/code>.<\/li>\n        <li>If <code>remAmount < 0<\/code>, invalid case \u2192 return <code>-1<\/code>.<\/li>\n    <\/ul>\n    <\/li>\n\n    <li><strong>Store<\/strong> already-computed results in a memo <code>(dp)<\/code> to avoid re-computation.<\/li>\n\n    <li>\n        <strong>For each coin<\/strong>, recursively compute the minimum coins needed for <code>remAmount - coin.<\/code>\n        <ul>\n            <li>If result is valid <code>(!= -1)<\/code>, update the minimum.<\/li>\n        <\/ul>\n    <\/li>\n\n    <li>Save the <strong>best result<\/strong> in <code>dp[remAmount]<\/code>.<\/li>\n\n    <li>Final answer is <code>fn(amount)<\/code> \u2192 the minimum number of coins or <code>-1<\/code> if impossible.<\/li>\n\n<\/ul>\n\n    <h2>Time & Space Complexity:<\/h2>\n    <p><strong>Time Complexity:<\/strong> <code>O(amount x n)<\/code><\/p>\n    <p><strong>Space Complexity:<\/strong> <code>O(amount)<\/code><\/p>\n\n<h2>Dry Run<\/h2> \n<div style=\"background: var(--light-bg); border-left: 4px solid var(--primary); padding: 1rem; border-radius: var(--tab-radius); margin: 1rem 0; color: var(--text-dark);\"> \n  <p><strong>Input:<\/strong> <code>coins = [1, 2, 5], amount = 11<\/code><\/p> \n  \n  <pre style=\"white-space: pre-wrap; background: var(--code-bg); padding: 1rem; border-radius: 8px; overflow-x: auto; color: var(--code-text);\">\n\nStep 0: Start Function: coinChange([1,2,5], 11)\nn = 3\ndp = {}\n\nCall fn(11):\n\nfn(11):\n- remAmount = 11 (not in dp, >0)\n- minCoins = Infinity\n\n  Try coin = 1 \u2192 call fn(10)\n  Try coin = 2 \u2192 call fn(9)\n  Try coin = 5 \u2192 call fn(6)\n\nfn(10):\n- remAmount = 10\n- minCoins = Infinity\n  coin = 1 \u2192 fn(9)\n  coin = 2 \u2192 fn(8)\n  coin = 5 \u2192 fn(5)\n\nfn(9):\n- remAmount = 9\n- minCoins = Infinity\n  coin = 1 \u2192 fn(8)\n  coin = 2 \u2192 fn(7)\n  coin = 5 \u2192 fn(4)\n\nfn(8):\n- remAmount = 8\n- minCoins = Infinity\n  coin = 1 \u2192 fn(7)\n  coin = 2 \u2192 fn(6)\n  coin = 5 \u2192 fn(3)\n\nfn(7):\n- remAmount = 7\n- minCoins = Infinity\n  coin = 1 \u2192 fn(6)\n  coin = 2 \u2192 fn(5)\n  coin = 5 \u2192 fn(2)\n\nfn(6):\n- remAmount = 6\n- minCoins = Infinity\n  coin = 1 \u2192 fn(5)\n  coin = 2 \u2192 fn(4)\n  coin = 5 \u2192 fn(1)\n\nfn(5):\n- remAmount = 5\n- minCoins = Infinity\n  coin = 1 \u2192 fn(4)\n  coin = 2 \u2192 fn(3)\n  coin = 5 \u2192 fn(0)\n\nfn(0) = 0 (base case)\nSo fn(5) = min(1 + fn(0)) = 1\ndp[5] = 1\n\nfn(6):\n- got fn(5) = 1\n- Try coin=5 \u2192 fn(1)\n\nfn(1):\n- remAmount = 1\n- Try coin=1 \u2192 fn(0) = 0\n- minCoins = 1\ndp[1] = 1\n\nSo fn(6) = min( fn(5)+1 , fn(4)+1, fn(1)+1 )\n= min(2, ?, 2) = 2\ndp[6] = 2\n\nfn(7):\n- Try coin=2 \u2192 fn(5)=1\n- Try coin=5 \u2192 fn(2)\n\nfn(2):\n- remAmount = 2\n- coin=1 \u2192 fn(1)=1 \u2192 total=2\n- coin=2 \u2192 fn(0)=0 \u2192 total=1\ndp[2] = 1\n\nSo fn(7) = min( fn(6)+1=3, fn(5)+1=2, fn(2)+1=2 ) = 2\ndp[7] = 2\n\nfn(8):\n- Try coin=2 \u2192 fn(6)=2 \u2192 total=3\n- Try coin=5 \u2192 fn(3)\n\nfn(3):\n- remAmount = 3\n- coin=1 \u2192 fn(2)=1 \u2192 total=2\n- coin=2 \u2192 fn(1)=1 \u2192 total=2\n- coin=5 \u2192 fn(-2) = -1 (ignore)\ndp[3] = 2\n\nSo fn(8) = min( fn(7)+1=3, fn(6)+1=3, fn(3)+1=3 ) = 3\ndp[8] = 3\n\nfn(9):\n- Try coin=2 \u2192 fn(7)=2 \u2192 total=3\n- Try coin=5 \u2192 fn(4)\n\nfn(4):\n- remAmount = 4\n- coin=1 \u2192 fn(3)=2 \u2192 total=3\n- coin=2 \u2192 fn(2)=1 \u2192 total=2\n- coin=5 \u2192 fn(-1) = -1\ndp[4] = 2\n\nSo fn(9) = min( fn(8)+1=4, fn(7)+1=3, fn(4)+1=3 ) = 3\ndp[9] = 3\n\nfn(10):\n- Try coin=1 \u2192 fn(9)=3 \u2192 total=4\n- Try coin=2 \u2192 fn(8)=3 \u2192 total=4\n- Try coin=5 \u2192 fn(5)=1 \u2192 total=2\ndp[10] = 2\n\nfn(11):\n- Try coin=1 \u2192 fn(10)=2 \u2192 total=3\n- Try coin=2 \u2192 fn(9)=3 \u2192 total=4\n- Try coin=5 \u2192 fn(6)=2 \u2192 total=3\ndp[11] = 3\n\nStep 3: End\nReturn dp[11] = 3\n  <\/pre> \n  <p><strong>Output:<\/strong> <code>3<\/code><\/p> \n<\/div>\n\n        <h2>Visualisation:<\/h2>\n        <img decoding=\"async\" src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-26-at-2.18.00\u202fPM.png\" alt=\"Stocks\" \/>\n   \n<\/div>\n\n\n  <div class=\"wp_blog_code-tabs-container\">\n    <div class=\"wp_blog_code-tabs-header\">\n      <button class=\"wp_blog_code-tab-button active\" data-lang=\"js\">JavaScript<\/button>\n      <button class=\"wp_blog_code-tab-button\" data-lang=\"py\">Python<\/button>\n      <button class=\"wp_blog_code-tab-button\" data-lang=\"java\">Java<\/button>\n      <button class=\"wp_blog_code-tab-button\" data-lang=\"cpp\">C++<\/button>\n      <button class=\"wp_blog_code-tab-button\" data-lang=\"c\">C<\/button>\n      <button class=\"wp_blog_code-tab-button\" data-lang=\"cs\">C#<\/button>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content active\" data-lang=\"js\">\n      <pre><code class=\"language-javascript\">\nvar coinChange = function(coins, amount) {\n    let n = coins.length;\n    let dp = {};\n    let fn = (remAmount) => {\n        if (remAmount === 0) return 0;\n        if (remAmount < 0) return -1;\n\n        if (remAmount in dp) {\n            return dp[remAmount];\n        }\n\n        let minCoins = Infinity;\n        for (let i = 0; i < n; i++) {\n            let res = fn(remAmount - coins[i]);\n            if (res != -1) {\n                minCoins = Math.min(minCoins, 1 + res);\n            }\n        }\n        dp[remAmount] = (minCoins === Infinity) ? -1 : minCoins;\n        return dp[remAmount];\n    };\n    return fn(amount);\n};\n<\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"py\">\n      <pre><code class=\"language-python\">\nfrom functools import lru_cache\n\ndef coinChange(coins, amount):\n    @lru_cache(None)\n    def dfs(rem):\n        if rem == 0:\n            return 0\n        if rem < 0:\n            return -1\n        min_coins = float('inf')\n        for c in coins:\n            res = dfs(rem - c)\n            if res != -1:\n                min_coins = min(min_coins, 1 + res)\n        return -1 if min_coins == float('inf') else min_coins\n\n    return dfs(amount)\n      <\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"java\">\n      <pre><code class=\"language-java\">\nimport java.util.Arrays;\n\nclass Solution {\n    public int coinChange(int[] coins, int amount) {\n        if (amount == 0) return 0;\n        int[] memo = new int[amount + 1];\n        Arrays.fill(memo, Integer.MIN_VALUE); \/\/ sentinel for unknown\n        return dfs(coins, amount, memo);\n    }\n\n    private int dfs(int[] coins, int rem, int[] memo) {\n        if (rem == 0) return 0;\n        if (rem < 0) return -1;\n        if (memo[rem] != Integer.MIN_VALUE) return memo[rem];\n\n        int minCoins = Integer.MAX_VALUE;\n        for (int c : coins) {\n            int res = dfs(coins, rem - c, memo);\n            if (res != -1) minCoins = Math.min(minCoins, 1 + res);\n        }\n        memo[rem] = (minCoins == Integer.MAX_VALUE) ? -1 : minCoins;\n        return memo[rem];\n    }\n}\n    <\/code><\/pre>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"cpp\">\n      <pre><code class=\"language-cpp\">\n#include &lt;bits\/stdc++.h&gt;\nusing namespace std;\n\nclass Solution {\npublic:\n    int coinChange(vector<int>& coins, int amount) {\n        if (amount == 0) return 0;\n        int n = coins.size();\n        vector<int> memo(amount + 1, INT_MIN); \/\/ sentinel = unknown\n        function<int(int)> dfs = [&](int rem) -> int {\n            if (rem == 0) return 0;\n            if (rem < 0) return -1;\n            if (memo[rem] != INT_MIN) return memo[rem];\n\n            int minCoins = INT_MAX;\n            for (int i = 0; i < n; ++i) {\n                int res = dfs(rem - coins[i]);\n                if (res != -1) minCoins = min(minCoins, 1 + res);\n            }\n            memo[rem] = (minCoins == INT_MAX) ? -1 : minCoins;\n            return memo[rem];\n        };\n        return dfs(amount);\n    }\n};\n<\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"c\">\n      <pre><code class=\"language-c\">\n#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;limits.h&gt;\n\nint dfs(int rem, int *coins, int n, int *memo) {\n    if (rem == 0) return 0;\n    if (rem < 0) return -1;\n    if (memo[rem] != INT_MIN) return memo[rem];\n    int minCoins = INT_MAX;\n    for (int i = 0; i < n; ++i) {\n        int res = dfs(rem - coins[i], coins, n, memo);\n        if (res != -1 &#038;&#038; res + 1 < minCoins) minCoins = res + 1;\n    }\n    memo[rem] = (minCoins == INT_MAX) ? -1 : minCoins;\n    return memo[rem];\n}\nint coinChange(int *coins, int n, int amount) {\n    if (amount == 0) return 0;\n    int *memo = (int*)malloc((amount + 1) * sizeof(int));\n    if (!memo) return -1; \/\/ allocation failure fallback\n    for (int i = 0; i <= amount; ++i) memo[i] = INT_MIN;\n    int ans = dfs(amount, coins, n, memo);\n    free(memo);\n    return ans;\n}\n <\/code><\/pre>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"cs\">\n      <pre><code class=\"language-csharp\">\nusing System;\npublic class Solution {\n    public int CoinChange(int[] coins, int amount) {\n        if (amount == 0) return 0;\n        int n = coins.Length;\n        int[] memo = new int[amount + 1];\n        for (int i = 0; i <= amount; i++) memo[i] = int.MinValue; \/\/ sentinel for \"unknown\"\n\n        int DFS(int rem) {\n            if (rem == 0) return 0;\n            if (rem < 0) return -1;\n            if (memo[rem] != int.MinValue) return memo[rem];\n\n            int minCoins = int.MaxValue;\n            for (int i = 0; i < n; i++) {\n                int res = DFS(rem - coins[i]);\n                if (res != -1) minCoins = Math.Min(minCoins, 1 + res);\n            }\n            memo[rem] = (minCoins == int.MaxValue) ? -1 : minCoins;\n            return memo[rem];\n        }\n\n        return DFS(amount);\n    }\n}\n      <\/code><\/pre>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const buttons = document.querySelectorAll(\".wp_blog_code-tab-button\");\n  const contents = document.querySelectorAll(\".wp_blog_code-tab-content\");\n\n  buttons.forEach((button) => {\n    button.addEventListener(\"click\", () => {\n      const lang = button.getAttribute(\"data-lang\");\n\n      buttons.forEach((btn) => btn.classList.remove(\"active\"));\n      contents.forEach((content) => content.classList.remove(\"active\"));\n\n      button.classList.add(\"active\");\n      document\n        .querySelector(`.wp_blog_code-tab-content[data-lang=\"${lang}\"]`)\n        .classList.add(\"active\");\n    });\n  });\n\n  const themeToggle = document.getElementById(\"blogNotesThemeToggle\");\n  const themeContainer = document.querySelector(\".wp_blog_theme\");\n\n  themeToggle.addEventListener(\"click\", () => {\n    themeContainer.classList.toggle(\"dark-mode\");\n    themeToggle.textContent =\n      themeContainer.classList.contains(\"dark-mode\") ? \"\u2600\ufe0f\" : \"\ud83c\udf19\";\n  });\n});\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf19 Problem Statement: You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money. Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return<\/p>\n","protected":false},"author":108,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[210,260,176,175,211,811,810,174,172,173],"tags":[],"class_list":["post-10122","post","type-post","status-publish","format-standard","category-algorithms","category-c-c-plus-plus","category-csharp","category-cplusplus","category-data-structures","category-data-structures-and-algorithms","category-dsa","category-java","category-javascript","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/108"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=10122"}],"version-history":[{"count":1,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10122\/revisions"}],"predecessor-version":[{"id":10123,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/10122\/revisions\/10123"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=10122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=10122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=10122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}