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*.
hang,lie=(int(x) for x in input().split())
#print(hang,lie)

lst=[]
for i in range(hang):
    lst.append([int(x) for x in input().split()])
    
    '''
lst=[[0,0,1],[1,1,0],[1,1,0],[0,0,1]]
lst=[[0],[1],[1],[0],[0],[1],[1],[1]]
hang,lie=(8,1)'''
def solve(lst,hang,lie):
    #print(lst)
    if(hang%2==1):
        print(hang)
        return 
    
    while(1):
        length=len(lst)
        #print(lst)
        for row in range(lie):
            #print(row)
            for i in range(length//2):
                if(lst[length//2-1-i][row]==lst[length//2+i][row]):
                    pass
                else:
                    print(length)
                    return
        lst=lst[:length//2:]
        #print(lst)
        if(length==1):
            print(1)
            #print(lst)
            return



solve(lst,hang,lie)
        
    
 	  	   					      	 	   			  	