Maximum product of word lengths in Python
My solution is quite different, let me explain it:

At first I define a small helper to check if two words have any letter in common, it may also be in-lined, but I like small functions.

def common(a, b):
    """
    &gt;&gt;&gt; common("hello", "hi")
    {'h'}
    """
    return set(a) &amp; set(b)


Then I define the relevant score function for the strings, as you see, after defining our criteria we are almost done.

def product_score(w1, w2):
    """
    &gt;&gt;&gt; product_score("foo", "bar")
    9
    &gt;&gt;&gt; product_score("foo", "fuu")
    0
    """
    return 0 if common(w1, w2) else len(w1) * len(w2)


The last step is very easy. We already know the criteria, so we can just map it over the combination of 2 of the input list and take the max:

def maxProduct(words):
    """
    Maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters.

    &gt;&gt;&gt; maxProduct(["eae", "ea", "aaf", "bda", "fcf", "dc", "ac", "ce", "cefde", "dabae"])
    15
    """
    return max(product_score(w1, w2) 
                   for (w1, w2) in itertools.combinations(words, 2))


I think my solution is more readable, mainly because it uses smaller functions and because it uses already existing wheels (standard library modules).