Clean Recursive Python Solution (Easy to Understand)
python\nclass Solution(object):\n    def findLexSmallestString(self, s, a, b):\n        s = [int(x) for x in s]\n        \n        allVals = set()\n        \n  
```python\nclass Solution(object):\n    def findLexSmallestString(self, s, a, b):\n        s = [int(x) for x in s]\n        \n        allVals = set()\n        \n        def rotateValue(values, index):\n            values = list(values)\n            r = []\n            for i in range(index):\n                r.append(values.pop(-1))\n            return list(r[::-1] + values)\n        \n        def addValue(values, amt):\n            values = list(values)\n            for i in range(len(values)):\n                if i % 2 != 0:\n                    values[i] += amt\n                    values[i] = values[i] % 10\n            return values\n        \n        def convert_to_string(values):\n            return \'\'.join([str(x) for x in values])\n            \n        def check(value):\n            # Takes in a [int, int, int...]\n            value_as_string = convert_to_string(value)\n            if value_as_string not in allVals:\n                self.minValue = min(self.minValue, value_as_string)\n                allVals.add(value_as_string)\n\t\t\t\t\n\t\t\t\tcheck(rotateValue(value, b))\n\t\t\t\tcheck(addValue(value, a))\n\t\t\t\t\n            return self.minValue\n        \n        self.minValue = convert_to_string(s)\n        \n        return check(s)\n```
['Python', 'Python3']