
    Design a function that determines the number of possible ways to group different essay assessment criteria into evaluation categories, where each criterion must be included exactly once and can be combined with any other criteria in a category. For example, with 3 criteria like grammar, content, and structure, valid groupings could include {{grammar}, {content}, {structure}}, {{grammar, content}, {structure}}, or {{grammar, content, structure}}, and the function should return the total count of such valid grouping possibilities.
    

    
def bell_number(n):
    """
    Design a function that determines the number of possible ways to group different essay assessment criteria into evaluation categories, where each criterion must be included exactly once and can be combined with any other criteria in a category. For example, with 3 criteria like grammar, content, and structure, valid groupings could include {{grammar}, {content}, {structure}}, {{grammar, content}, {structure}}, or {{grammar, content, structure}}, and the function should return the total count of such valid grouping possibilities.
    

    """
def bell_number(n):
    """
    Design a function that determines the number of possible ways to group different essay assessment criteria into evaluation categories, where each criterion must be included exactly once and can be combined with any other criteria in a category. For example, with 3 criteria like grammar, content, and structure, valid groupings could include {{grammar}, {content}, {structure}}, {{grammar, content}, {structure}}, or {{grammar, content, structure}}, and the function should return the total count of such valid grouping possibilities.
    

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