#!/usr/bin/env python
# encoding: utf-8
import sys
def sub_k(s):
max_k = 0
for i in range(10, -1, -1):
Flag = True
for j in range(2**i-1, -1, -1):
tmp = bin(j)[2:]
for k in range(i-len(tmp)):
tmp = '0'+tmp
if tmp not in s:
Flag = False
break
if Flag:
max_k = i
break
return max_k
n, m = map(int, sys.stdin.readline().strip().split(' '))
string = ['-1']
for i in range(n):
tmp_str = sys.stdin.readline().strip()
string.append(tmp_str)
op = [[i] for i in range(n+1)]
for i in range(m):
left, right = map(int, sys.stdin.readline().strip().split(' '))
op.append(op[left]+op[right])
concat = []
for l in op[n+1:]:
# tmp_str = string[left] + string[right]
tmp_str = ''.join([string[i] for i in l])
string.append(tmp_str)
# print tmp_str
print sub_k(tmp_str)
第四题 80%