private boolean solveWithBacktrack(int step,Board.Field f) {
		Iterator<Board.Field> it = b.getGreedy(f);
		
		if(step < max)
		{
			while(it.hasNext())
			{	
				Board.Field nextf = it.next();
				
				if(solveWithBacktrack(step+1,nextf))
				{
					//found solution
					solution.add(f);
					return true;
				}				
			}
			
			b.backTrack(f);
			return false;
		}
		
		solution.add(f);

		return true;
	}