------
## 最终结论
```python
def is_scramble(s1, s2):
    if len(s1) != len(s2):
        return False
    if s1 == s2:
        return True
    if sorted(s1) != sorted(s2):  # Check character count matching
        return False
    
    n = len(s1)
    for i in range(1, n):  # Iterate through possible split points
        # Check without swapping
        if (is_scramble(s1[:i], s2[:i]) and is_scramble(s1[i:], s2[i:])) or \
           (is_scramble(s1[:i], s2[-i:]) and is_scramble(s1[i:], s2[:-i])):
            return True
            
    return False

def are_scrambled_strings(s1, s2):
    return is_scramble(s1, s2)

# Example usage:
s1 = "great"
s2 = "rgeat"
print(are_scrambled_strings(s1, s2))  # Output: True

s1 = "abcde"
s2 = "caebd"
print(are_scrambled_strings(s1, s2))  # Output: False
```