#include <bits/stdc++.h>
using namespace std;
int dp[2010][2010];
int l;
int mod = 1000000007;
string s;
int cal (int i, int j) {
if (i < 0 || j > l) {
return 0;
}
if (dp[i][j] != 0) {
return dp[i][j];
}
int temp;
if (s[i] == s[j]) {
temp = (cal(i+1, j) % mod + cal(i, j-1)%mod)%mod + 1;
temp = temp % mod;
}else {
temp = (cal(i+1, j) % mod + cal(i, j-1)%mod)%mod;
temp = temp - cal(i+1, j-1)%mod;
temp = temp + mod;
temp = temp % mod;
}
dp[i][j] = temp;
cout<<temp<<endl;
return temp;
}
int main() {
//relevant code here
int test;
cin>>test;
while (test--) {
s.clear();
cin>>s;
l = s.size();
memset (dp, 0, sizeof (dp));
cout<<cal(0, l-1)<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZHBbMjAxMF1bMjAxMF07CmludCBsOwppbnQgbW9kID0gMTAwMDAwMDAwNzsKc3RyaW5nIHM7CmludCBjYWwgKGludCBpLCBpbnQgaikgewogICAgaWYgKGkgPCAwIHx8IGogPiBsKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBpZiAoZHBbaV1bal0gIT0gMCkgewogICAgICAgIHJldHVybiBkcFtpXVtqXTsKICAgIH0KICAgIGludCB0ZW1wOwogICAgaWYgKHNbaV0gPT0gc1tqXSkgewogICAgICAgIHRlbXAgPSAoY2FsKGkrMSwgaikgJSBtb2QgKyBjYWwoaSwgai0xKSVtb2QpJW1vZCArIDE7CiAgICAgICAgdGVtcCA9IHRlbXAgJSBtb2Q7CiAgICB9ZWxzZSB7CiAgICAgICAgdGVtcCA9IChjYWwoaSsxLCBqKSAlIG1vZCArIGNhbChpLCBqLTEpJW1vZCklbW9kOwogICAgICAgIHRlbXAgPSB0ZW1wIC0gY2FsKGkrMSwgai0xKSVtb2Q7CiAgICAgICAgdGVtcCA9IHRlbXAgKyBtb2Q7CiAgICAgICAgdGVtcCA9IHRlbXAgJSBtb2Q7CiAgICB9CiAgICBkcFtpXVtqXSA9IHRlbXA7CiAgICBjb3V0PDx0ZW1wPDxlbmRsOwogICAgcmV0dXJuIHRlbXA7Cn0KCgppbnQgbWFpbigpIHsKCQoJLy9yZWxldmFudCBjb2RlIGhlcmUKCWludCB0ZXN0OwoJY2luPj50ZXN0OwoJd2hpbGUgKHRlc3QtLSkgewoJICAgIHMuY2xlYXIoKTsKCSAgICBjaW4+PnM7CgkgICAgbCA9IHMuc2l6ZSgpOyAKCSAgICBtZW1zZXQgKGRwLCAwLCBzaXplb2YgKGRwKSk7CgkgICAgY291dDw8Y2FsKDAsIGwtMSk8PGVuZGw7Cgl9CgoJcmV0dXJuIDA7Cn0=