class Solution {
private static final int N = 100010;
private static final int MOD = (int) 1e9 + 7;
private static long[] f = new long[N];
private static long[] g = new long[N];
static {
f[0] = 1;
f[1] = 1;
f[2] = 2;
f[3] = 4;
g[0] = 1;
g[1] = 1;
g[2] = 2;
g[3] = 4;
for (int i = 4; i < N; ++i) {
f[i] = (f[i - 1] + f[i - 2] + f[i - 3]) % MOD;
g[i] = (g[i - 1] + g[i - 2] + g[i - 3] + g[i - 4]) % MOD;
}
}
public int countTexts(String pressedKeys) {
long ans = 1;
for (int i = 0, n = pressedKeys.length(); i < n; ++i) {
int j = i;
char c = pressedKeys.charAt(i);
for (; j + 1 < n && pressedKeys.charAt(j + 1) == c; ++j)
;
int cnt = j - i + 1;
ans = c == '7' || c == '9' ? ans * g[cnt] : ans * f[cnt];
ans %= MOD;
i = j;
}
return (int) ans;
}
}