from typing import List
import re


def split_to_words(s: str) -> List[str]:
    """
    Break the string into words.
    e.g.
        1. 'a b' -> ['a', 'b']
        2. 'a-b' -> ['a', 'b']
        3. 'a_b' -> ['a', 'b']
        4. 'AbcDef' -> ['Abc', 'Def']
    """
    return re.sub(r'(\s|_|-)+', ' ', re.sub('([A-Z]+)', r' \1', s)).split()