Заменить подстроку между соответствующими скобками (Python)

Тема: 
Строки

В стороке заменить подстроку, находящуюся между первой открывающей квадратной скобкой и соответствующей ей закрывающей.

Сложность данной задачи заключается в том, что между первой открывающей и соответствующей ей закрывающей скобками, могут быть другие скобки. Например, в строке 'a[bc[de]f]gh[jkl]' первая открывающая находится после символа 'a', а соответствующая ей закрывающая - после символа 'f'. Т. е. по условию задачи в данном примере замене подлежит подстрока '[bc[de]f]'.

Чтобы найти соответствующую закрывающую, в программе ниже вводится счетчик последующих открывающих скобок, и пока он не будет равен нулю, все закрывающие скобки соответствующими первой открывающей не считаются.

s = input("Введите исходную строку: ")
 
p1 = -1 # индекс первой открывающей скобки
i = 0
while i < len(s):
	if s[i] == '[':
		p1 = i # мы нашли скобку (ее индекс), 
		break # дальше просматривать строку бессмысленно
	i += 1
if p1 == -1: exit() # открывающей скобки нет, выходим из программы
 
p2 = -1 # индекс закрывающей скобки, соответствующей первой открывающей
count = 0 # счетчик остальных открывающих скобок
i += 1 # будем просматривать строку со следующего символа за тем, на котором остановились ранее
while i < len(s): 
	if s[i] == '[': 
		count += 1
	elif s[i] == ']': # встретилась закрывающая скобка 
		if count == 0: # и счетчик равен нулю
			p2 = i # значит это закрывающая скобка от первой открывающей
			break # нет смысла просматривать дальше
		else: # встретилась закрывающая скобка, но счетчик открыващих не равен нулю,
			count -= 1 # значит была закрыта какая-то другая, но не первая скобка.
	i += 1
if p2 == -1: exit() # закрывающей скобки нет, выходим из программы
 
s_in = input("Введите подстроку для вставки: ")
 
s_out = s[p1+1:p2] # скобки не берем
print("Вырезанная подстрока:", s_out)
s = s[:p1] + s_in + s[p2+1:]
print("Новая строка:", s)

Примеры выполнения программы:

Введите исходную строку: [who[is]it] is big master-[kunfu?].
Введите подстроку для вставки: Bob Green 
Вырезанная подстрока: who[is]it
Новая строка: Bob Green is big master-[kunfu?].
Введите исходную строку: hello [world]
Введите подстроку для вставки: space
Вырезанная подстрока: world
Новая строка: hello space