def is_valid_svd_string(ein_string: str) -> bool:
    """
    Check the input ein_string is properly formatted for use in svd_flex

    Args:
        ein_string: See svd_flex for formatting restrictions

    Returns:
        is_valid:   True if the format is valid, false otherwise
    """
    # Parse ein_string into init_str, left_str, and right_str
    ein_string = ein_string.replace(' ', '')
    try:
        init_str, post_str = ein_string.split('->')
        left_str, right_str = post_str.split(',')
    except ValueError:
        return False

    str_list = [init_str, left_str, right_str]

    # Check that each string component has correct formatting, meaning:
    # (1) Only alphabetic characters,
    # (2) No duplicate characters), 
    # (3) Each component must have at least one free index, and 
    # (4) The characters in left_str and right_str are those in init_str 
    #     plus one extra character for the new bond
    cond_1 = (init_str + left_str + right_str).isalpha()
    cond_2 = all(len(set(s)) == len(s) for s in str_list)
    cond_3 = all(len(s) >= 2 for s in str_list)
    cond_4a = len(left_str + right_str) == len(init_str) + 2
    cond_4b = len(set(left_str + right_str) - set(init_str)) == 1

    return cond_1 and cond_2 and cond_3 and cond_4a and cond_4b