
    Given n distinct traffic flow patterns observed at an intersection throughout the day, determine the number of different ways these patterns can be grouped into coordinated signal timing schedules, where each pattern must be assigned to exactly one timing group and empty groups are not allowed. Each possible grouping arrangement represents a unique traffic signal coordination strategy that could be implemented at the intersection.
    

    
def bell_number(n):
    """
    Given n distinct traffic flow patterns observed at an intersection throughout the day, determine the number of different ways these patterns can be grouped into coordinated signal timing schedules, where each pattern must be assigned to exactly one timing group and empty groups are not allowed. Each possible grouping arrangement represents a unique traffic signal coordination strategy that could be implemented at the intersection.
    

    """
def bell_number(n):
    """
    Given n distinct traffic flow patterns observed at an intersection throughout the day, determine the number of different ways these patterns can be grouped into coordinated signal timing schedules, where each pattern must be assigned to exactly one timing group and empty groups are not allowed. Each possible grouping arrangement represents a unique traffic signal coordination strategy that could be implemented at the intersection.
    

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