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*.
import sys
import math
from collections import defaultdict
import itertools

MAXNUM = math.inf
MINNUM = -1 * math.inf


def getInt():
    return int(sys.stdin.readline().rstrip())


def getInts():
    return map(int, sys.stdin.readline().rstrip().split(" "))


def getString():
    return sys.stdin.readline().rstrip()


def printOutput(ans):
    sys.stdout.write()
    pass


def solve(grid):

    for k in range(1, len(grid) + 1):
        seq = [i for i in range(k)]
        cur = 0
        total = 0
        for line in grid:
            #print(k, grid[cur], line)
            if line == grid[seq[cur]]:
                total += 1
                cur += 1
                if cur == len(seq):
                    seq = [i for i in reversed(seq)]
                    cur = 0
            else:
                break
        if total == len(grid):
            return k

    return -1


def readinput():
    n, m = getInts()
    grid = []
    for _ in range(n):
        grid.append(getString())
    print(solve(grid))


readinput()
