from typing import List


def split_changes_into_list(changes: str) -> List[str]:
    """
    Given a string of chord alterations (e.g., suspensions or added tones),
    split them into a list of individual alterations.

    Parameters
    ----------
    changes : str
        A string representing a chord alterations, like "64" or "13+b2".

    Returns
    -------
    changes_list : List[str]
        The given changes, split into a list of strings representing each individual
        alteration.
    """

    def get_first_change_length(changes: str) -> int:
        """
        Get the length of the first chord change in the given changes string.

        Parameters
        ----------
        changes : str
            A string representing a chord alterations, like "64" or "13+b2".

        Returns
        -------
        length : int
            The length of the first change in the given string. For example, given "b42",
            this will return 2.
        """
        if changes is None or len(changes) == 0:
            return 0

        # Find the first numeric character
        length = 0
        while not changes[length].isnumeric():
            length += 1

        if changes[length] == "1":
            length += 2
        else:
            length += 1

        return length

    changes_list = []
    length = get_first_change_length(changes)
    while length != 0:
        changes_list.append(changes[:length])
        changes = changes[length:]
        length = get_first_change_length(changes)

    return changes_list