s2 = ['c', 'd', 'e', 'f']
s3 = ['c', 'd', 'e', 'f']
s4 = ['g']
p = itertools.product(*[s1, s2, s3, s4])
r = re.compile('[ab].c')
l = list(filter(r.search, (''.join(s) for s in p)))
print(list(l))
Быстрый способ создания комбинаций с ограничениями?