from collections import deque class Solution: def solve(self, s): levels = [-1 for i in s] q = deque() for idx in range(len(s)): if s[idx] == "R" or s[idx] == "L": q.append((idx, 0, s[idx])) l = list(s) while q: idx, new_level, dir = q.popleft() if levels[idx] == -1: levels[idx] = new_level l[idx] = dir if dir == "R" and idx + 1 < len(l): q.append((idx + 1, new_level + 1, dir)) elif dir == "L" and idx - 1 >= 0: q.append((idx - 1, new_level + 1, dir)) elif levels[idx] == new_level: if l[idx] != dir: l[idx] = "@" return "".join(l) ob = Solution() s = "@@L@R@@@@L" print(ob.solve(s))