Python two-pointers O(n) solution
```python\nclass Solution:\n    def canChange(self, start: str, target: str) -> bool:\n        lcnt, rcnt = 0, 0\n        for c1, c2 in zip(start, target):\n   
```python\nclass Solution:\n    def canChange(self, start: str, target: str) -> bool:\n        lcnt, rcnt = 0, 0\n        for c1, c2 in zip(start, target):\n            if c1 == \'L\': lcnt += 1\n            if c2 == \'L\': lcnt -= 1\n            if c1 == \'R\': rcnt += 1\n            if c2 == \'R\': rcnt -= 1\n        if lcnt or rcnt: return False\n        \n        s_ptr = 0\n        for t_ptr in range(len(target)):\n            if target[t_ptr] == \'_\':\n                continue\n            else:\n                while s_ptr < len(start) and start[s_ptr] == \'_\':\n                    s_ptr += 1\n                if (target[t_ptr] != start[s_ptr] or\n                    target[t_ptr] == \'L\' and s_ptr < t_ptr or\n                    target[t_ptr] == \'R\' and s_ptr > t_ptr):\n                    return False\n                s_ptr += 1\n        return True\n
['Two Pointers', 'Python']