def min_operations_to_make_good(s): n = len(s) s_list = list(s) operations = 0 def is_good_string(string): for i in range(n): for j in range(i+1, n): if j - i >= 1: zeros = string[i:j+1].count('0') ones = string[i:j+1].count('1') if zeros > ones: return False return True while not is_good_string(s_list): best_pos = -1 max_improvement = -1 for i in range(n): if s_list[i] == '0': s_list[i] = '1' if is_good_string(s_list): operations += 1 return operations improvement = 0 for start in range(n): for end in range(start+1, n): if end - start >= 1: zeros = s_list[start:end+1].count('0') ones = s_list[start:end+1].count('1') if zeros <= ones: improvement += 1 s_list[i] = '0' if improvement > max_improvement: max_improvement = improvement best_pos = i s_list[best_pos] = '1' operations += 1 return operations test_cases = [ "01001", "1010010001" ] for s in test_cases: print(min_operations_to_make_good(s))