def to_same(value1, value2, ctx):
    """
    Converts a pair of arguments to their most-likely types. This deviates from Excel which doesn't auto convert values
    but is necessary for us to intuitively handle contact fields which don't use the correct value type
    """
    if type(value1) == type(value2):
        return value1, value2

    try:
        # try converting to two decimals
        return to_decimal(value1, ctx), to_decimal(value2, ctx)
    except EvaluationError:
        pass

    try:
        # try converting to two dates
        d1, d2 = to_date_or_datetime(value1, ctx), to_date_or_datetime(value2, ctx)

        # if either one is a datetime, then the other needs to become a datetime
        if type(value1) != type(value2):
            d1, d2 = to_datetime(d1, ctx), to_datetime(d2, ctx)
        return d1, d2
    except EvaluationError:
        pass

    # try converting to two strings
    return to_string(value1, ctx), to_string(value2, ctx)
Converts a pair of arguments to their most-likely types. This deviates from Excel which doesn't auto convert values
    but is necessary for us to intuitively handle contact fields which don't use the correct value type