
    Given n different investment categories (such as stocks, bonds, real estate, etc.), determine the total number of unique ways to create diversified portfolio combinations where each investment category must be assigned to exactly one portfolio group, and portfolios can contain multiple categories. The number of portfolio groups is not fixed and can range from 1 (all categories in a single portfolio) to n (each category in its own portfolio).
    

    
def bell_number(n):
    """
    Given n different investment categories (such as stocks, bonds, real estate, etc.), determine the total number of unique ways to create diversified portfolio combinations where each investment category must be assigned to exactly one portfolio group, and portfolios can contain multiple categories. The number of portfolio groups is not fixed and can range from 1 (all categories in a single portfolio) to n (each category in its own portfolio).
    

    """
def bell_number(n):
    """
    Given n different investment categories (such as stocks, bonds, real estate, etc.), determine the total number of unique ways to create diversified portfolio combinations where each investment category must be assigned to exactly one portfolio group, and portfolios can contain multiple categories. The number of portfolio groups is not fixed and can range from 1 (all categories in a single portfolio) to n (each category in its own portfolio).
    

    """
    bell = [[0 for i in range(n + 1)] for j in range(n + 1)]
    bell[0][0] = 1
    for i in range(1, n + 1):
        bell[i][0] = bell[i - 1][i - 1]
        for j in range(1, i + 1):
            bell[i][j] = bell[i - 1][j - 1] + bell[i][j - 1]
    return bell[n][0]