def _get_neighbours(maze, c):
    """ Returns the coordinates of the given cell's neighbours.

    A tuple with two lists is returned. The first list contains all the given cell's already explored neighbours. The
    second list contains all the given cell's unexplored neighbours.

    :param maze: Matrix with the ascii representation of the maze.
    :param c: Tuple containing the coordinates of the cell.
    :return: Tuple with two lists containing, respectively, the explored neighbours and the unexplored neighbours.
    """
    neighbours = []

    # north neighbour
    if c[0] > 0:
        neighbours.append( (c[0] - 1, c[1]) )
    # south neighbour
    if c[0] < (len(maze) - 1):
        neighbours.append((c[0] + 1, c[1]))
    # west neighbour
    if c[1] > 0:
        neighbours.append((c[0], c[1] - 1))
    # east neighbour
    if c[1] < (len(maze[0]) - 1):
        neighbours.append((c[0], c[1] + 1))

    explored, unexplored = [], []
    for n in neighbours:
        t = unexplored if maze[n[0]][n[1]] == "-" else explored
        t.append(n)

    return explored, unexplored