Skip to main content
6 of 8
bytes saved

Python 3, 168 157 152 139 bytes

EDIT: Really obvious things I should have seen easier have been changed, and some slightly less obvious.

Edit 2: stoopid (˚n˚). The program threw errors. I fixed it up. not actually 153 :(

Thanks to Leaky Nun for saving 5 bytes, and to jmilloy for saving 13 bytes.

s=input()
p=q=k=len(s)
m=0
while-~p:
 while-~q:n=q-p;m=n if(s[p:q]in"lucky")*n>m else m;q-=1
 p-=1;q=k
print(2**m-2*(i in"omen"for i in s))

The program runs through all possibly possible substrings in input (possibly possible, because it computes impossible substrings as well, 8 to 7, for example), checks if the substring is in "lucky", then sets the exponent of 2 to the length of the substring should it be greater than the current value. Possibly could be improved by using only one while loop. Could possibly use some improvement; I'm still getting the hang of this.