
    Given n different types of social activities in a friend network, determine the number of unique ways these activities can be grouped into recommendation clusters, where each activity must belong to exactly one cluster and empty clusters are not allowed. The grouping should help suggest related activities to friend circles based on shared interests, and the same solution can be reused for different numbers of activity types.
    

    
def bell_number(n):
    """
    Given n different types of social activities in a friend network, determine the number of unique ways these activities can be grouped into recommendation clusters, where each activity must belong to exactly one cluster and empty clusters are not allowed. The grouping should help suggest related activities to friend circles based on shared interests, and the same solution can be reused for different numbers of activity types.
    

    """
def bell_number(n):
    """
    Given n different types of social activities in a friend network, determine the number of unique ways these activities can be grouped into recommendation clusters, where each activity must belong to exactly one cluster and empty clusters are not allowed. The grouping should help suggest related activities to friend circles based on shared interests, and the same solution can be reused for different numbers of activity types.
    

    """
    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]