Python, Easy to understand
\nclass Solution:\n    def findLexSmallestString(self, s: str, a: int, b: int) -> str:\n        # add and rotate function\n        def add(s,a):\n            ne
```\nclass Solution:\n    def findLexSmallestString(self, s: str, a: int, b: int) -> str:\n        # add and rotate function\n        def add(s,a):\n            new = ""\n            for i in range(len(s)):\n                if i % 2 != 0:\n                    new += str(int(s[i])+a)[-1]\n                else:\n                    new += s[i]\n            return new\n        \n        def rotate(s,b):\n            return s[len(s)-b:]+s[:len(s)-b] \n        \n        # Perform search         \n        seen = set()\n        need = list()\n        need.append(s)\n\n        while need:\n            curr = need.pop()\n            if curr not in seen:\n                # add current string to seen                 \n                seen.add(curr)\n                # add next two cases into waiting queue\n                need.extend([add(curr,a),rotate(curr,b)])\n                \n        # select smallest string from all possible cases        \n        return min(seen)\n        \n```
[]