def mapping_exists(a: str, b: str) -> bool:
    """Determine whether it's possible to create a bijection between the characters in a to the
    characters in b.

    We do this by first checking to see if a and b have the same length, if they don't, we know a
    bijection is impossible. We iterate through a and b, keeping track of a character that a
    corresponds to with b. If we don't already have a mapping established, set it, otherwise ensure
    that the given character always matches up with what we have mapped.

    param a: An input string
    param b: An input string
    returns: Whether it is possible to create a 1-1 character mapping between the two strings
    """
    # We know that there can't be a mapping if there's different length strings
    if len(a) != len(b):
        return False

    # mappings[x] gives us which character from b the character `x` from a corresponds to
    mappings = {}

    for a_char, b_char in zip(a, b):
        if a_char not in mappings:
            mappings[a_char] = b_char
        elif b_char != mappings[a_char]:
            return False
    return True