if i == middle - 1 or i >= 5 and len(list) <= 4:
return -1
part1map[i] == part1[i]
всегда. Вместо цикла по мапу, можно пройтись циклом от 0 до длины строки. -Wconversion
. Код выше этот варнинг выдает во втором месте, но все-равно компилируется.