**Maximum Product of Word Lengths**

#### Description

Given a string array words, find the maximum value of `length(word[i]) * length(word[j])`

where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.

#### Example

1 | Input: ["abcw","baz","foo","bar","xtfn","abcdef"] |

1 | Input: ["a","ab","abc","d","cd","bcd","abcd"] |

#### Solution

This problem is involved with ** Bit Manipulation**, which I think is pretty hard. And the solution here is very tricky. The detailed explaination is in the algorithm.

##### Algorithm

*Python*

1 | def maxProduct(words): |

##### Complexity

Time Complexity: `O(n^2)`

Space Complexity: `O(n)`