
    Design a fraud detection algorithm that determines the number of unique ways to group customer transactions into distinct behavioral patterns, where each transaction must belong to exactly one pattern group and the total number of possible pattern groupings represents potential fraud detection strategies. Given n distinct transaction characteristics (such as location, amount, frequency), calculate how many different ways these characteristics can be organized into monitoring clusters to effectively detect fraudulent activities.
    

    
def bell_number(n):
    """
    Design a fraud detection algorithm that determines the number of unique ways to group customer transactions into distinct behavioral patterns, where each transaction must belong to exactly one pattern group and the total number of possible pattern groupings represents potential fraud detection strategies. Given n distinct transaction characteristics (such as location, amount, frequency), calculate how many different ways these characteristics can be organized into monitoring clusters to effectively detect fraudulent activities.
    

    """
def bell_number(n):
    """
    Design a fraud detection algorithm that determines the number of unique ways to group customer transactions into distinct behavioral patterns, where each transaction must belong to exactly one pattern group and the total number of possible pattern groupings represents potential fraud detection strategies. Given n distinct transaction characteristics (such as location, amount, frequency), calculate how many different ways these characteristics can be organized into monitoring clusters to effectively detect fraudulent activities.
    

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