public TurnAction tryToReachBoardState(BoardState startingState, BoardState endingState){
		
		Iterator stateComparisonResults = compareStates(startingState, endingState);
		int selectedRow = noRowSelected;
		int selectedRowTokens = 0;
		boolean movePossible = true;
		
		int checkedRowTokens = 0;
		int rowNumber = 1;
		
		boolean comparisonInProgress = stateComparisonResults.hasNext();
		TurnAction suggestedAction = null;
		
		while(comparisonInProgress){
			checkedRowTokens = (Integer)stateComparisonResults.next();
			comparisonInProgress = stateComparisonResults.hasNext();
			
			if(representsTokensRemoved(checkedRowTokens)){
				if(selectedRow == noRowSelected){
					selectedRow = rowNumber;
					selectedRowTokens = checkedRowTokens;
				}else{
					comparisonInProgress = false;
					movePossible = false;	
				}
			}else if(representsTokensAdded(checkedRowTokens)){
				comparisonInProgress = false;
				movePossible = false;
			}
			rowNumber++;
		}
		
		if(movePossible){
			suggestedAction = new TurnAction();
			suggestedAction.setTargetRow(selectedRow);
			suggestedAction.setTokenAmount(selectedRowTokens);
		}
		 
		return suggestedAction;
	}