Let's assume that we are given a matrix *b* of size *x* × *y*, let's determine the operation of mirroring matrix *b*. The mirroring of matrix *b* is a 2*x* × *y* matrix *c* which has the following properties:
 -  the upper half of matrix *c* (rows with numbers from 1 to *x*) exactly matches *b*; -  the lower half of matrix *c* (rows with numbers from *x* + 1 to 2*x*) is symmetric to the upper one; the symmetry line is the line that separates two halves (the line that goes in the middle, between rows *x* and *x* + 1). 
Sereja has an *n* × *m* matrix *a*. He wants to find such matrix *b*, that it can be transformed into matrix *a*, if we'll perform on it several (possibly zero) mirrorings. What minimum number of rows can such matrix contain?
The first line contains two integers, *n* and *m* (1 ≤ *n*, *m* ≤ 100). Each of the next *n* lines contains *m* integers — the elements of matrix *a*. The *i*-th line contains integers *a*<sub class="lower-index">*i*1</sub>, *a*<sub class="lower-index">*i*2</sub>, ..., *a*<sub class="lower-index">*im*</sub> (0 ≤ *a*<sub class="lower-index">*ij*</sub> ≤ 1) — the *i*-th row of the matrix *a*.
x,y = map(int,input().split())
lst = []
for i in range(x):
    lst.append(input().replace(' ',''))
    
# print(lst)


#
for i in range(1,x + 1):
    leng = i
    if(x % 2 == 1 and leng % 2 == 1):
        continue
    flag = True
    if 2 * leng - 1 >= x:
        # print(2 * leng * y - 1)
        print(x)
        break
    
    for j in range(leng):
        # print(lst[j],lst[leng * 2 - 1 - j])
        if (lst[j] != lst[leng * 2 - 1 - j]):
            flag = False
            continue
    if flag :
        print(i)
        break
    else:
        continue
    
    
    
    #001 110 110 001
    # if s[0:leng - 1] == s[leng - 1 : 2 * leng : -1]:
    #     print(i)
    #     break
   	 	 			   		 	  			 		 		  	