Python solution, fast and intuitive
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```\nclass Solution:\n    def makeSmallestPalindrome(self, s: str) -> str:\n        tmp = list(s)\n        start = 0\n        end = len(s) - 1\n\n        while start <= end:\n            l = tmp[start]\n            r = tmp[end]\n            if l != r:\n                change = l if l<r else r\n                tmp[start], tmp[end] = change, change\n            start += 1\n            end -= 1\n\n        return ("").join(tmp)\n        \n```
['Python3']