[Python] Simple & Fast Solution, explained
Observations\n1. We know for certain number of \'H\' and \'V\', the total number of instructions are comb(h + v, v)\n2. They should be sorted lexicographically,
**Observations**\n1. We know for certain number of **\'H\'** and **\'V\'**, the total number of instructions are **comb(h + v, v)**\n2. They should be sorted **lexicographically**, which means: the **order** of instructions with first character of **\'H\'** are always smaller than instructions with first character of **\'V\'**:\nFor example, **destination = [2,3], k = 1**:\n["**H**HHVV", "**H**HVHV", "**H**HVVH", "**H**VHHV", "**H**VHVH", "**H**VVHH", "**V**HHHV", "**V**HHVH", "**V**HVHH", "**V**VHHH"]\n3. If the first character is **\'H\'**, we know there will be **comb(h + v - 1, v)** number of instructions for the rest of characters because we used **one** **\'H\'**.\n\n**Algo**\n1. Use the above 3 facts, we know after sored, **comb(h + v - 1, v)** number of instructions starting with **\'H\'**, and the rest of the instructions are starting with **\'V\'**\n2. Based on value of **k**, we will know which **group** the kth instructions belongs to\n3. Then we can get the characters one by one\n4. Available characters will be **decreasing** until one of them hit **0**\n\n**Code:**\n```\nclass Solution:\n    def kthSmallestPath(self, destination: List[int], k: int) -> str:\n        v, h = destination\n        res = \'\'\n        while h > 0 and v > 0:\n            pre = comb(h + v - 1, v)\n            \n            if k <= pre:\n                res += \'H\'\n                h -= 1\n            else:\n                res += \'V\'\n                v -= 1\n                k -= pre\n\n        if h == 0:\n            res += \'V\' * v\n        if v == 0:\n            res += \'H\' * h\n            \n        return res\n```\n**Runtime: 32ms**
['Python3']