comefrom: <awangdev>Distinct Subsequences_3.java
code: public int numDistinct(String S, String T) {
          int[][] DP = new int[T.length() + 1][S.length() + 1];
          DP[0][0] = 1;
          for(int i = 1; i < S.length(); i++) {
              DP[0][i] = 1;
          }
          for (int i = 1; i < T.length(); i++) {
              DP[i][0] = 0;
          }
          for (int i = 1; i <= T.length(); i++) {
              for (int j = 1; j <= S.length(); j++){
                  DP[i][j] = DP[i][j - 1];
                  if (T.charAt(i - 1) == S.charAt(j - 1)) {
                      DP[i][j] += DP[i - 1][j - 1];
                  }
              }
          }
          return DP[T.length()][S.length()];
      }
masked: public int sample_funcname ( String var_0 , String var_1 ) {
    int [ ] [ ] var_2 = new int [ var_1 . length ( ) + 1 ] [ var_0 . length ( ) + 1 ] ;
    var_2 [ 0 ] [ 0 ] = 1 ;
    for ( int var_3 = 1 ;
    var_3 < var_0 . length ( ) ;
    var_3 ++ ) {
      var_2 [ 0 ] [ var_3 ] = 1 ;
    }
    for ( int var_3 = 1 ;
    var_3 < var_1 . length ( ) ;
    var_3 ++ ) {
      var_2 [ var_3 ] [ 0 ] = 0 ;
    }
    for ( int var_3 = 1 ;
    var_3 <= var_1 . length ( ) ;
    var_3 ++ ) {
      for ( int var_4 = 1 ;
      var_4 <= var_0 . length ( ) ;
      var_4 ++ ) {
        var_2 [ var_3 ] [ var_4 ] = var_2 [ var_3 ] [ var_4 - 1 ] ;
        if ( var_1 . charAt ( var_3 - 1 ) == var_0 . charAt ( var_4 - 1 ) ) {
          var_2 [ var_3 ] [ var_4 ] += var_2 [ var_3 - 1 ] [ var_4 - 1 ] ;
        }
      }
    }
    return var_2 [ var_1 . length ( ) ] [ var_0 . length ( ) ] ;
  }
  