OpenKattis
National University of Singapore

# Coloring Graphs

To address the impending STEM shortage early on, your local elementary school decided to teach graph theory to its kindergarten students! To tap into their age-specific skills, the students are asked to color the vertices of a graph with colors of their own choosing. There is one constraint, however: they cannot use the same color for two vertices if those vertices are connected by an edge. Furthermore, they are asked to use as few different colors as possible. The illustration shows a few examples of student work.

There is one problem, as you can imagine: there is no money to train teachers to grade these students’ submissions! Thus, your task is to write a program that computes the sample solutions for the graphs given on each work sheet!

## Input

The input consists of a description of a single graph. The first line contains a number $N$ ($2 \le N \le 11$), the number of vertices in the graph. Vertices are numbered $0 \ldots N-1$. The following $N$ lines contain one or more numbers each. The $i^{th}$ line contains a list of vertex numbers ${ v_ j }$, denoting edges from $v_ i$ to each $v_ j$ in the list. You may assume that the graph is connected (there is a path between any two pairs of vertices).

## Output

Output the minimum number of colors required to color all vertices of the graph such that no vertices that share an edge are colored using the same color!

The sample input corresponds to the graphs shown on the illustration.

Sample Input 1 Sample Output 1
4
1 2
0 2 3
0 1
1

3

Sample Input 2 Sample Output 2
5
2 3 4
2 3 4
0 1
0 1
0 1

2

Sample Input 3 Sample Output 3
6
1 3
0 2 4
1 5
0 4
1 3 5
2 4

2

Sample Input 4 Sample Output 4
4
1 2 3
0 2 3
0 1 3
0 1 2

4

Sample Input 5 Sample Output 5
5
1 2
0 2 3
0 1 4
1 4
2 3

3