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*.
class CodeforcesTask426BSolution:
    def __init__(self):
        self.result = ''
        self.n_m = []
        self.matrix = []

    def read_input(self):
        self.n_m = [int(x) for x in input().split(" ")]
        for x in range(self.n_m[0]):
            self.matrix.append([int(y) for y in input().split(" ")])

    def process_task(self):
        size = self.n_m[0]
        while not size % 2:
            mirrorify = True
            for x in range(size // 2):
                if self.matrix[x] != self.matrix[size - x - 1]:
                    mirrorify = False
                    break
            if not mirrorify:
                break
            else:
                size //= 2
        self.result = str(size)

    def get_result(self):
        return self.result


if __name__ == "__main__":
    Solution = CodeforcesTask426BSolution()
    Solution.read_input()
    Solution.process_task()
    print(Solution.get_result())
