Могут помочь следующие оптимизации:
1) Поменяй все функции рекурсии на циклы(если рекурсия не требуется в задаче)
2) Перемести всю программу под функцию, чтобы в основном теле выполнялась только одна функция(main() например)
3) Исправь все возведения в степень на умножение (i ** 2 = i * i, i ** 3 = i * i * i)
4) Если ты добавляешь какой то массив в конец другого то лучше это делать не циклом с методом .append() от этого элемента, а методом .extend() от массива который ты хочешь добавить.
5) Есть еще куча оптимизаций, но на данный момент помню только эти(мне они помогали).
Если это не поможет то думаю следует обратиться к семинаристу с этим вопросом.