У Вас не получается найти ошибку, потому что не выстроена структура и логика программы. Вот простой вариант решения "в лоб" с использованием минимума средств. Класс позволяет избавиться от сложного для восприятия нагромождения формул:
class Match:
    @classmethod
    def from_coords(cls, coords):
        yield cls(coords[0:2])
        yield cls(coords[2:4])
        yield cls(coords[4:6])
    def __init__(self, endpoints):
        self.x1, self.x2 = sorted(endpoints)
  
    def __invert__(self):
        return self.x2 - self.x1
    
    def __xor__(m1, m2):
        return max(m1.x2, m2.x2) - min(m1.x1, m2.x1) - ~m1 - ~m2
    
    def __and__(m1, m2):
        return m1 ^ m2 <= 0
        
def solve(*coords):
    m1, m2, m3 = Match.from_coords(coords)
    if (m1 & m2) + (m1 & m3) + (m2 & m3) >= 2:
        return 0
    if ~m1 >= m2 ^ m3:
        return 1
    if ~m2 >= m1 ^ m3:
        return 2
    if ~m3 >= m1 ^ m2:
        return 3
    return -1
if __name__ == '__main__':
    
    assert solve(0, 2, 4, 5, 3, 6) == 1
    assert solve(1, 2, 9, 10, 12, 20) == 3
    assert solve(1, 5, 0, 1, 4, 8) == 0
    assert solve(1, 3, 3, 4, 5, 6) == 1
    assert solve(0, 1, 3, 5, 9, 10) == -1