Problem p02937 (python)

Fixed submission:
from bisect import bisect_right
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  for i in range(n):
    if len(lindex[ord(t[i])-97])==0:
      print(-1)
      exit()
  cnt=0
  inde=-1
  for i in range(n):
    l=len(lindex[ord(t[i])-97])
    idx=bisect_right(lindex[ord(t[i])-97],inde)
    if l==idx:
      cnt+=1
      inde=lindex[ord(t[i])-97][0]
    else:
      inde=lindex[ord(t[i])-97][idx]
  return print(m*cnt+inde+1)
if __name__=='__main__':
  main()

Buggy submission (verdict: Runtime Error):
from bisect import bisect_right
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  for i in range(n):
    if len(lindex[ord(t[i])-97])==0:
      print(-1)
      exit()
  cnt=0
  for i in range(n-1):
    l=len(lindex[ord(t[i+1])-97])
    idx=bisect_right(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0])
    if l==idx:
      cnt+=1
      inde=lindex[ord(t[i+1])-97][0]+1
    else:
      inde=lindex[ord(t[i+1])-97][idx]+1
  return print(m*cnt+inde)
if __name__=='__main__':
  main()

Buggy submission (verdict: Runtime Error):
from bisect import bisect_right
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  for i in range(n):
    if len(lindex[ord(t[i])-97])==0:
      print(-1)
      exit()
  cnt=0
  for i in range(n-1):
    l=len(lindex[ord(t[i+1])-97])
    if l==bisect_right(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0]):
      cnt+=1
    if i==n-2:
      if l>bisect_right(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0]):
        k=lindex[ord(t[n-1])-97][0]
      else:
        k=bisect_right(lindex[ord(t[n-1])-97],lindex[ord(t[i])-97][0])
  return print(m*cnt+k+1)
if __name__=='__main__':
  main()

Buggy submission (verdict: Runtime Error):
from bisect import bisect_left
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  for i in range(n):
    if len(lindex[ord(t[i])-97])==0:
      print(-1)
      exit()
  cnt=0
  for i in range(n-1):
    if l==bisect_left(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0]):
      cnt+=1
  k=lindex[ord(t[n-1])-97][0]
  return print(m*cnt+k+1)
if __name__=='__main__':
  main()

Buggy submission (verdict: Runtime Error):
from bisect import bisect_left
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  cnt=0
  for i in range(n-1):
    l=len(lindex[ord(t[i+1])-97])
    if l==0 or len(lindex[ord(t[i])-97])==0:
      print(-1)
      exit()
    if l==bisect_left(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0]):
      cnt+=1
  k=lindex[ord(t[-1])-97][0]
  return print(m*cnt+k+1)
if __name__=='__main__':
  main()

Buggy submission (verdict: Runtime Error):
from bisect import bisect_left
def main():
  s=input()
  t=input()
  n=len(t)
  m=len(s)
  lindex=[[] for _ in range(26)]
  for i in range(m):
    if s[i] in t:
      lindex[ord(s[i])-97].append(i)
  cnt=0
  for i in range(n-1):
    l=len(lindex[ord(t[i+1])-97])
    if l==0:
      print(-1)
      exit()
    if l==bisect_left(lindex[ord(t[i+1])-97],lindex[ord(t[i])-97][0]):
      cnt+=1
  k=lindex[ord(t[-1])-97][0]
  return print(m*cnt+k+1)
if __name__=='__main__':
  main()