comefrom: <gouthampradhan>dynamic_programming_ConcatenatedWords_1.java
code: private boolean concatenatedWordsPossible(String word, Set<String> dictionary) {
      boolean[] D = new boolean[word.length() + 1];
      D[word.length()] = true;
      dictionary.remove(word); 
      for (int i = word.length() - 1; i >= 0; i--) {
        for (int j = i, l = word.length(); j < l; j++) {
          String subStr = word.substring(i, j + 1);
          if (dictionary.contains(subStr) && D[j + 1]) {
            D[i] = true;
            break;
          }
        }
      }
      dictionary.add(word); 
      return D[0];
    }
masked: private boolean var_0 ( String var_2 , Set < String > var_4 ) {
    boolean [ ] var_8 = new boolean [ var_2 . length ( ) + 1 ] ;
    var_8 [ var_2 . length ( ) ] = true ;
    var_4 . remove ( var_2 ) ;
    for ( int var_10 = var_2 . length ( ) - 1 ;
    var_10 >= 0 ;
    var_10 -- ) {
      for ( int var_12 = var_10 , var_13 = var_2 . length ( ) ;
      var_12 < var_13 ;
      var_12 ++ ) {
        String var_15 = var_2 . substring ( var_10 , var_12 + 1 ) ;
        if ( var_4 . contains ( var_15 ) && var_8 [ var_12 + 1 ] ) {
          var_8 [ var_10 ] = true ;
          break ;
        }
      }
    }
    var_4 . add ( var_2 ) ;
    return var_8 [ 0 ] ;
  }
  