def polstring_version_required(str_in):
    """
    What SICD version does the pol string require?

    Parameters
    ----------
    str_in : None|str
        The tx/rcv polarization string.

    Returns
    -------
    tuple
        One of `(1, 1, 0)`, `(1, 2, 1)`, `(1, 3, 0)`
    """

    if str_in is None or str_in in ['OTHER', 'UNKNOWN']:
        return (1, 1, 0)

    parts = str_in.split(':')
    if len(parts) != 2:
        return (1, 1, 0)

    part1, part2 = parts
    if part1 in ['S', 'E', 'X', 'Y', 'OTHER'] or part2 in ['S', 'E', 'X', 'Y', 'OTHER']:
        return (1, 3, 0)
    elif (part1 in ['V', 'H'] and part2 in ['RHC', 'LHC']) or \
            (part2 in ['V', 'H'] and part1 in ['RHC', 'LHC']):
        return (1, 2, 1)
    else:
        return (1, 1, 0)