
    Given n distinct transaction patterns identified in the bank's fraud detection system, determine the total number of possible ways to group these patterns into separate monitoring categories, where each pattern must be assigned to exactly one category and empty categories are allowed. The grouping helps the bank's security team organize their monitoring efforts by clustering related suspicious activities together.
    

    
def bell_number(n):
    """
    Given n distinct transaction patterns identified in the bank's fraud detection system, determine the total number of possible ways to group these patterns into separate monitoring categories, where each pattern must be assigned to exactly one category and empty categories are allowed. The grouping helps the bank's security team organize their monitoring efforts by clustering related suspicious activities together.
    

    """
def bell_number(n):
    """
    Given n distinct transaction patterns identified in the bank's fraud detection system, determine the total number of possible ways to group these patterns into separate monitoring categories, where each pattern must be assigned to exactly one category and empty categories are allowed. The grouping helps the bank's security team organize their monitoring efforts by clustering related suspicious activities together.
    

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