#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1009;
const ll MOD = 1000000007;
char line[MAXN];
ll dp[MAXN][MAXN], s[MAXN][MAXN];
int main()
{
//freopen("in", "r", stdin);
while (scanf("%s\n", line) != EOF) {
memset(dp, 0, sizeof(dp));
memset(s, 0, sizeof(s));
dp[1][1] = s[1][1] = 1;
int n = strlen(line) + 1;
for (int i = 2; i < n + 1; i++)
for (int j = 1; j < i + 1; j++) {
if (line[i - 2] == 'D')
dp[i][j] = (s[i - 1][i - 1] - s[i - 1][j - 1] + MOD) % MOD;
else if (line[i - 2] == 'I')
dp[i][j] = s[i - 1][j - 1];
else
dp[i][j] = s[i - 1][i - 1];
dp[i][j] %= MOD;
s[i][j] = (s[i][j - 1] + dp[i][j]) % MOD;
}
printf("%lld\n", s[n][n]);
}
}