1. class Solution:
    2. def numDistinct(self, s: str, t: str) -> int:
    3. n = len(s)
    4. m = len(t)
    5. if n < m:
    6. return 0
    7. dp = [[0] * (m + 1) for _ in range(n + 1)]
    8. dp[0][0] = 1
    9. for i in range(1, n+1):
    10. for j in range(m+1):
    11. if j == 0:
    12. dp[i][j] = 1
    13. elif s[i-1] == t[j-1]:
    14. dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
    15. else:
    16. dp[i][j] = dp[i-1][j]
    17. return dp[-1][-1]