def
is_valid(length, S1, S2, C, target):
i, j, n, cost
=
0
,
0
,
len
(S1),
0
flag
=
False
start_pos, end_pos
=
-
1
,
-
1
while
j < n:
cost
+
=
(C
if
S1[j] !
=
S2[j]
else
0
)
if
j
-
i
+
1
=
=
length:
if
cost <
=
target:
flag
=
True
start_pos, end_pos
=
i, j
cost
-
=
(C
if
S1[j] !
=
S2[j]
else
0
)
i
+
=
1
j
+
=
1
return
flag, start_pos, end_pos
def
valid_substring(S1, S2, C, target):
start_pos, end_pos
=
-
1
,
-
1
start, end, n
=
0
,
len
(S1),
len
(S1)
result
=
0
while
start < end:
mid
=
(start
+
end)
/
/
2
is_valid_flag, i, j
=
is_valid(mid, S1, S2, C, target)
if
is_valid_flag:
result
=
mid
start
=
mid
+
1
start_pos, end_pos
=
i, j
else
:
end
=
mid
if
start_pos
=
=
-
1
:
print
(
"Not possible"
)
else
:
print
(start_pos, end_pos)
S1, S2
=
"abcd"
,
"bcdf"
C, target
=
1
,
5
valid_substring(S1, S2, C, target)
S1, S2
=
"abc"
,
"cdf"
C, target
=
10
,
3
valid_substring(S1, S2, C, target)
S1, S2
=
"abcb"
,
"cdfb"
C, target
=
2
,
2
valid_substring(S1, S2, C, target)