#include <iostream>
#include <vector>
using namespace std;
const int mod = 1000000007;
void CF570E(istream& _r, ostream& out) {
int n, m;
_r >> n >> m;
vector<string> a(n);
for (int i = 0; i < n; i++) {
_r >> a[i];
}
if (a[0][0] != a[n-1][m-1]) {
out << 0;
return;
}
vector<vector<int>> f(n + 1, vector<int>(n + 2));
f[1][n] = 1;
for (int i = 1; i < (n + m) / 2; i++) {
for (int r1 = n; r1 > 0; r1--) {
for (int r2 = 1; r2 <= n; r2++) {
int c1 = i + 2 - r1, c2 = m + n - i - r2;
if (0 < c1 && c1 <= m && 0 < c2 && c2 <= m) {
if (a[r1 - 1][c1 - 1] == a[r2 - 1][c2 - 1]) {
f[r1][r2] = (((f[r1][r2] + f[r1][r2 + 1]) % mod + f[r1 - 1][r2 + 1]) % mod + f[r1 - 1][r2]) % mod;
} else {
f[r1][r2] = 0;
}
}
}
}
}
int64_t ans = 0;
if ((n + m) % 2 > 0) {
for (int i = 1; i <= n; i++) {
ans += int64_t(f[i][i] + f[i][i + 1]);
}
} else {
for (int i = 1; i <= n; i++) {
ans += int64_t(f[i][i]);
}
}
out << ans % mod;
}
int main() {
CF570E(cin, cout);
return 0;
}
1047. Remove All Adjacent Duplicates In String | 977. Squares of a Sorted Array |
852. Peak Index in a Mountain Array | 461. Hamming Distance |
1748. Sum of Unique Elements | 897. Increasing Order Search Tree |
905. Sort Array By Parity | 1351. Count Negative Numbers in a Sorted Matrix |
617. Merge Two Binary Trees | 1450. Number of Students Doing Homework at a Given Time |
700. Search in a Binary Search Tree | 590. N-ary Tree Postorder Traversal |
589. N-ary Tree Preorder Traversal | 1299. Replace Elements with Greatest Element on Right Side |
1768. Merge Strings Alternately | 561. Array Partition I |
1374. Generate a String With Characters That Have Odd Counts | 1822. Sign of the Product of an Array |
1464. Maximum Product of Two Elements in an Array | 1323. Maximum 69 Number |
832. Flipping an Image | 1295. Find Numbers with Even Number of Digits |
1704. Determine if String Halves Are Alike | 1732. Find the Highest Altitude |
709. To Lower Case | 1688. Count of Matches in Tournament |
1684. Count the Number of Consistent Strings | 1588. Sum of All Odd Length Subarrays |
1662. Check If Two String Arrays are Equivalent | 1832. Check if the Sentence Is Pangram |