#!/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%