ЕГЭ информатика помогите пожалуйста решить 23 задачу на Python

8 или 13 - это не понятно, поскольку всегда было "и", а не "или"
Ответ:270, но я не знаю как его получить
Вот мое решение:

я тоже сталкивался с этой задачей, когда готовился к егэ. мне помогло, что я учился в Умскул , там объясняют такие моменты. попробуй использовать условие "или" в коде, это может помочь. ответ 270, если правильно посчитаешь. удачи!
def count_programs(start, end, via=None):
# Создадим словарь для хранения количества программ
dp = {}
def helper(x):
if x in dp:
return dp[x]
if x > end:
return 0
if x == end:
return 1
# Количество программ от текущего числа до конечного
dp[x] = helper(x + 1) + helper(x + 2) + helper(x * 2)
return dp[x]
total = helper(start)
if via is None:
return total
# Теперь нужно проверить сколько программ проходит через via
dp = {}
count_start_to_via = helper(start)
dp = {}
count_via_to_end = helper(via)
return count_start_to_via * count_via_to_end
start = 4
end = 16
via1 = 8
via2 = 13
# Количество программ, проходящих через 8 или 13
count_via1 = count_programs(start, end, via1)
count_via2 = count_programs(start, end, via2)
# Общее количество программ, проходящих через 8 или 13
# Учтем, что могут быть программы, проходящие через оба числа
count_via_both = count_programs(start, end, via1) * count_programs(via1, end, via2) if via1 < via2 else count_programs(start, end, via2) * count_programs(via2, end, via1)
# Суммируем результаты, учитывая пересечение
result = count_via1
+ count_via2 - count_via_both
print(result)
Попробуй f(4,8)*f(8,16)+f(4,13)*f(13,16)-f(8,13)