Here is an ugly iterative solution, in one lambda:
from itertools import product
f = lambda n: [
s for s in
map(''.join, product("abc", repeat=n))
if not any(a==b
for a,b in
[(s[a:b], s[b:c])
for a,b,c in
[(i,i+w,i+2*w)
for w in range(1,len(s)/2+1)
for i in range(len(s)-2*w+1)]])]
>>> f(5)
['abaca', 'abacb', 'abcab', 'abcac', 'abcba', 'acaba',
'acabc', 'acbab', 'acbac', 'acbca', 'babca', 'babcb',
'bacab', 'bacba', 'bacbc', 'bcaba', 'bcabc', 'bcacb',
'bcbab', 'bcbac', 'cabac', 'cabca', 'cabcb', 'cacba',
'cacbc', 'cbabc', 'cbaca', 'cbacb', 'cbcab', 'cbcac']