Python 3, Beats 98%, One pass, Greedy
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```python3 []\nclass Solution:\n    def getSmallestString(self, s: str, k: int) -> str:\n        N = len(s)\n        ans = ""\n\n        for ch in s:\n            if k == 0: break\n\n            dst_left_a = ord(ch) - ord(\'a\')\n            dst_right_a = 26 - dst_left_a\n            dst = min(dst_left_a, dst_right_a)\n            \n            if dst <= k:\n                k -= dst\n                ans += \'a\'\n            else:\n                ans += chr(ord(ch) - k)\n                k = 0\n\n        ln_ans = len(ans)        \n        return ans + s[ln_ans:]\n                \n            \n```
['String', 'Greedy', 'Python3']