def find_group_single_candidate(square: tuple, squares: list, grid: list) -> list:
    """
    Checks for a single option a square can have based on no other square in a group having it as an option

    :param square: A tuple (row, column) coordinate of the square
    :param squares: A list of squares (tuples) to check the options of
    :param grid: The sudoku grid as a 3D list
    :return: A list of options
    """
    if square in squares:
        squares.remove(square)
    square_options = set(grid[square[0]][square[1]][1])
    for sq in squares:
        if grid[sq[0]][sq[1]][0] == 0:
            square_options = square_options - set(grid[sq[0]][sq[1]][1])
        else:
            square_options = square_options - {grid[sq[0]][sq[1]][0]}
    return list(square_options)