#include <bits/stdc++.h>
using namespace std;
void solve(int n) {
  int m;
  cin >> m;
  static char buffer[1000];
  vector<string> grid(n);
  for (int j = 0; j < n; j++) {
    scanf(" %s", buffer);
    grid[j] = string(buffer);
  }
  const int maxmoves = (m + n - 2) / 2;
  long long dp[2][n][n];
  memset(dp, 0, sizeof dp);
  const long long mod = (long long)1e9 + 7;
  if ((m + n) % 2 == 0) {
    for (int j = 0; j < n; j++)
      for (int k = 0; k < m; k++)
        if ((j + k) == maxmoves) dp[0][j][j] = 1;
  } else {
    for (int j = 0; j < n; j++)
      for (int k = 0; k < m; k++)
        if ((j + k) == maxmoves)
          for (int dx = -1; dx <= 1; dx++)
            for (int dy = -1; dy <= 1; dy++)
              if (abs(dx) + abs(dy) == 1) {
                int nj = j + dx;
                int nk = k + dy;
                if (0 <= nj && nj < n && 0 <= nk && nk < m)
                  if (j + k + 1 == nj + nk)
                    if (grid[j][k] == grid[nj][nk]) dp[0][j][nj] = 1;
              }
  }
  int c = 1;
  for (int itr = maxmoves; itr >= 1; itr--) {
    memset(dp[c], 0, sizeof dp[c]);
    for (int x1 = 0; x1 < n; x1++)
      for (int x2 = 0; x2 < n; x2++)
        if (dp[c ^ 1][x1][x2]) {
          int y1 = itr - x1;
          int y2 = n + m - 2 - x2 - itr;
          for (int dx1 = -1; dx1 <= 0; dx1++)
            for (int dy1 = -1; dy1 <= 0; dy1++)
              if (dx1 + dy1 == -1)
                if (0 <= x1 + dx1 && 0 <= y1 + dy1)
                  for (int dx2 = 0; dx2 <= 1; dx2++)
                    for (int dy2 = 0; dy2 <= 1; dy2++)
                      if (dx2 + dy2 == 1)
                        if (x2 + dx2 < n && y2 + dy2 < m)
                          if (grid[x1 + dx1][y1 + dy1] ==
                              grid[x2 + dx2][y2 + dy2]) {
                            dp[c][x1 + dx1][x2 + dx2] += dp[c ^ 1][x1][x2];
                            dp[c][x1 + dx1][x2 + dx2] %= mod;
                          }
        }
    c ^= 1;
  }
  long long ans = dp[c ^ 1][0][n - 1];
  cout << ans << endl;
}
int main() {
  int n;
  while (cin >> n) solve(n);
}
