long increase subsequences are study in the context of various disciplines associated to mathematics, including algorithmics, random matrix theory, representation theory, and physics. In computer science, the longest increase subsequence problem is to find a subsequence of a given sequence in which the subsequence's components are in sorted order, lowest to highest, and in which the subsequence is as long as possible.

COMING SOON!

```
class Solution {
public:
int numDistinct(string S, string T) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int M = S.size();
int N = T.size();
if (M == 0 && N == 0)
return 1;
else if (M < N)
return 0;
int F[N+1];
memset(F, 0, sizeof(int)*(N+1));
F[0] = 1;
for (int i = 1; i <= M; i++) {
for (int j = N; j >= 1; j--) {
if (S[i-1] == T[j-1])
F[j] = F[j-1] + F[j];
}
}
return F[N];
}
};
```