Python Помогите решить

Ответы на вопрос
Немного костыльное решение.
Его минус в том что оно может находить разность или сумму только двух слагаемых, можно было сделать по человечески, но мне было лень)
Получается я написал функцию, которую из плюсов-минусов получает число, а обратную ей я не знал как написать, потому чтобы в итоге получить эту ерунду я просто перебрал все такие дурацкие числа длинной от 1 до 10, потому скрипт немного долго выполняется, но не критично. )) Больше 10ти скрипт уже может крашнуться, так что последний пример из задачи решить он не в состоянии, но это хоть что-то.
Проверил, по остальным приведенным примерам, все правильно выполняется.
Сам код (если знаешь как написать обратную функцию, можешь поступить по моему примеру)) ):
import itertools
s='+-+-+ (+) +-0-0-+-0'
def f(s):
s=s[::-1]
num=0
for i in range(len(s)):
num=num + eval(s[i].replace('+','1').replace('-','-1') +'*3**'+str(i))
return num
l=[]
for i in range(1,11): #вот тут на свой страх и риск можешь увеличить 11 на 14 или упаси бог на 15, но не надейся на что-то)
for t in list(map(''.join, itertools.product('+-0', repeat=i))):
l.append((f(t), t))
s=''.join(i if i not in '()' else ' ' for i in s).split()
n=eval( str(f(s[0])) + s[1] + str(f(s[2])))
print(l[ [i[0] for i in l].index(n) ][1])