from typing import Set


def get_embedded_areas_sums(parent_square_size: int, embedded_squares_count: int) -> Set[int]:
    """
    Get the set of all possible areas which can found by dividing a square of the sizeparent_square_size
    into embedded_squares_count subsquares. The function works in the recursive manner.

    :param parent_square_size: size of the parent square
    :param embedded_squares_count: count of parts to divide
    :return: set of possible areas
    """
    if embedded_squares_count == 0:
        return {0}
    if embedded_squares_count == 1:
        return {parent_square_size ** 2}
    if parent_square_size / embedded_squares_count < 1:
        return set()

    sums = set()
    for i in range(int(round(parent_square_size / 2))):
        area = (i + 1) ** 2
        for ps in get_embedded_areas_sums(parent_square_size - i - 1, embedded_squares_count - 1):
            sums.add(area + ps)
    return sums