private int countCompletelySolvedTopEdgeCubie() {
		int count = 0;
		
		RubiksCube rc = this.initialRcConfig;
		
		// Get the four top layer edge cubies
		Cubie frontTopFaceEdgeCubie  = rc.getCubie(2, 3, 3);
		Cubie rightTopFaceEdgeCubie  = rc.getCubie(3, 3, 2);
		Cubie backTopFaceEdgeCubie   = rc.getCubie(2, 3, 1);
		Cubie leftTopFaceEdgeCubie   = rc.getCubie(1, 3, 2);
		
		// Get top color from top face center cubie
		Facelet topColor = rc.getCubie(2, 3, 2).getTopFace();
		
		// Check front top edge
		boolean isFrontEdgeSolved = frontTopFaceEdgeCubie.getTopFace().equals(topColor) && frontTopFaceEdgeCubie.getFrontFace().equals(rc.getCubie(1, 3, 3).getFrontFace());
		if (isFrontEdgeSolved) {
			count++;
		}
		
		// Check right top edge
		boolean isRightEdgeSolved = rightTopFaceEdgeCubie.getTopFace().equals(topColor) && rightTopFaceEdgeCubie.getRightFace().equals(rc.getCubie(3, 3, 3).getRightFace());
		if (isRightEdgeSolved) {
			count++;
		}
		// Check back top edge
		boolean isBackEdgeSolved  = backTopFaceEdgeCubie.getTopFace().equals(topColor) && backTopFaceEdgeCubie.getBackFace().equals(rc.getCubie(3, 3, 1).getBackFace());
		if (isBackEdgeSolved) {
			count++;
		}
		
		// Check left top edge
		boolean isLeftEdgeSolved  = leftTopFaceEdgeCubie.getTopFace().equals(topColor) && leftTopFaceEdgeCubie.getLeftFace().equals(rc.getCubie(1, 3, 1).getLeftFace());
		if (isLeftEdgeSolved) {
			count++;
		}
		
		return count;
	}