```
class Solution(object):
def maxProduct(self, words):
lengths = [len(x) for x in words]
bits = []
for i in range(len(words)):
result = 0
bits.append(reduce(lambda x,y:x|1<<(ord(y)-ord('a')),[j for j in words[i]], 0))
final = 0
for i in range(len(lengths)):
for j in range(i+1, len(lengths)):
if (bits[i]&bits[j] == 0 and lengths[i]*lengths[j] > final):
final = lengths[i]*lengths[j]
return final
```