
    Given a set of n distinct transaction patterns observed in credit card usage, determine the number of possible ways these patterns can be grouped into different fraud detection clusters, where each transaction pattern must belong to exactly one cluster and the order of patterns within clusters doesn't matter. Each possible grouping represents a unique fraud detection strategy that the bank could implement to identify suspicious activities.
    

    
def bell_number(n):
    """
    Given a set of n distinct transaction patterns observed in credit card usage, determine the number of possible ways these patterns can be grouped into different fraud detection clusters, where each transaction pattern must belong to exactly one cluster and the order of patterns within clusters doesn't matter. Each possible grouping represents a unique fraud detection strategy that the bank could implement to identify suspicious activities.
    

    """
def bell_number(n):
    """
    Given a set of n distinct transaction patterns observed in credit card usage, determine the number of possible ways these patterns can be grouped into different fraud detection clusters, where each transaction pattern must belong to exactly one cluster and the order of patterns within clusters doesn't matter. Each possible grouping represents a unique fraud detection strategy that the bank could implement to identify suspicious 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]