from typing import Iterable, TypeVar T = TypeVar("T") def _rotate_r(__s: list[T]) -> list[T]: return [__s[-1]] + __s[0:-1] def _valid_rotate(__s: Iterable[str], __c: Iterable[str]) -> bool: for sc, cc in zip(__s, __c): # can never rotate a "1" onto an "x" if sc == "x" and cc == "1": return False return True def _fix_exes(__s: Iterable[str], __c: Iterable[str]) -> list[str]: result = [] for sc, cc in zip(__s, __c): if sc == "x": result.append("x") elif cc == "x": result.append("0") else: result.append(cc) return result def rotate_r(__s: list[str]) -> list[str]: result = _rotate_r(__s) while not _valid_rotate(__s, result): result = _rotate_r(result) return _fix_exes(__s, result)