private SearchResult searchHeuristic(Coordinate startCoordinate, Coordinate endCoordinate){
		
		boolean modified = false;
		
		// on boucle sur les chiffres pour trouver deux possibilités
		for (int i = 1; i < matrix.getMatrixSize(); i++) {
			//System.out.println("Recherche des premières couples pour la valeur " + i);
			List<Coordinate> firstPossibleSet = computeNumberOfPossible(startCoordinate, endCoordinate, i);
			
			// Si on a deux possibilités et que ce sont les mêmes
			if(firstPossibleSet.size() == 2){
				//System.out.println("Premier couple trouvé : recherche des deuxièmes couples pour la valeur " + i);
				for (int j = i + 1; j <= matrix.getMatrixSize(); j++) {
					List<Coordinate> secondPossibleSet = computeNumberOfPossible(startCoordinate, endCoordinate, j);
					if(secondPossibleSet.size() == 2){
						// Si ce sont les mêmes cases, alors on les tagge
						if(firstPossibleSet.get(0).equals(secondPossibleSet.get(0)) && 
							firstPossibleSet.get(1).equals(secondPossibleSet.get(1))
								){
							modified = modified || tagCell(firstPossibleSet.get(0), i, j);
							modified = modified || tagCell(firstPossibleSet.get(1), i, j);
							//System.out.println("Got it ! Two possibles : " + firstPossibleSet.get(0) + " " + firstPossibleSet.get(1) + " " + i + " " + j );
						}
					}
				}
			}
		}
		return new SearchResult(false,modified);
	}