public Stream<String> placeFiguresOnBoard(String initialBoard) {
        int numberOfKings = figureChain.extractA(KING.toString());
        int numberOfQueens = figureChain.extractA(QUEEN.toString());
        int numberOfBishops = figureChain.extractA(BISHOP.toString());
        int numberOfRooks = figureChain.extractA(ROOK.toString());
        int numberOfKnights = figureChain.extractA(KNIGHT.toString());
        int sumOfAllFigures = numberOfBishops + numberOfKings + numberOfKnights + numberOfQueens + numberOfRooks;

        if (Objects.nonNull(initialBoard) && !initialBoard.isEmpty() && sumOfAllFigures > initialBoard.length()) {
            throw new IllegalStateException("There are more figures than places to put them");
        }

        isBoardLegal(initialBoard, dimension);
        HashSet<String> initialBoards = new HashSet<>();
        initialBoards.add(initialBoard);

        return figureChain.placeFigures(initialBoards.stream());
    }