#include <bits/stdc++.h>
using namespace std;
const long long MOD=1e9+7;long long f[10005][10005],kq=0;string s;
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
freopen("mstring.inp","r",stdin);
freopen("mstring.out","w",stdout);
cin>>s;
int n=s.size();
f[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
f[i][j]=(f[i][j-1]+f[i-1][j]-f[i-1][j-1]+MOD)%MOD;
if(s[i-1]==s[j-1])f[i][j]=(f[i][j]+f[i-1][j-1]+1)%MOD;
}
}
cout<<f[n][n];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsb25nIGxvbmcgTU9EPTFlOSs3O2xvbmcgbG9uZyBmWzEwMDA1XVsxMDAwNV0sa3E9MDtzdHJpbmcgczsKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBmcmVvcGVuKCJtc3RyaW5nLmlucCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oIm1zdHJpbmcub3V0IiwidyIsc3Rkb3V0KTsKICAgIGNpbj4+czsKICAgIGludCBuPXMuc2l6ZSgpOwogICAgZlswXVswXT0xOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bjtqKyspCiAgICAgICAgewogICAgICAgICAgICBmW2ldW2pdPShmW2ldW2otMV0rZltpLTFdW2pdLWZbaS0xXVtqLTFdK01PRCklTU9EOwogICAgICAgICAgICBpZihzW2ktMV09PXNbai0xXSlmW2ldW2pdPShmW2ldW2pdK2ZbaS0xXVtqLTFdKzEpJU1PRDsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxmW25dW25dOwogICAgcmV0dXJuIDA7Cn0=