import pypyjit pypyjit.set_param("max_unroll_recursion=-1") MOD = 998244353 N = int(input()) C = [input() for _ in range(N)] memo = [[[-1 for _ in range(N)] for _ in range(N)] for _ in range(N)] def f(n,y,yy): if(n == N-1):return y == yy if(memo[n][y][yy] != -1):return memo[n][y][yy] x = n - y xx = (2*N - 2) - n - yy ret = 0 if(C[y+1][x] == C[yy-1][xx]): ret += f(n+1,y+1,yy-1) ret %= MOD if(C[y+1][x] == C[yy][xx-1]): ret += f(n+1,y+1,yy) ret %= MOD if(C[y][x+1] == C[yy-1][xx]): ret += f(n+1,y,yy-1) ret %= MOD if(C[y][x+1] == C[yy][xx-1]): ret += f(n+1,y,yy) ret %= MOD memo[n][y][yy] = ret return ret if(C[0][0] == C[N-1][N-1]): print(f(0,0,N-1)) else: print(0)