N,Q=map(int,input().split()) S=input() G=[[] for i in range(10)] v=[[0]*N for i in range(10)] for i in range(N): x=int(S[i]) G[x].append(i) for y in range(10): if y==x: v[y][i]=v[y][i-1]+1 else: v[y][i]=v[y][i-1] M=10**10 for _ in range(Q): l,r=map(int,input().split()) l-=1 r-=1 if l==r: if S[r]=='8': print(0) else: print(-1) continue if r==l+1: c=int(S[l:r+1]) d=int(S[r]+S[l]) if c%8==0: print(0) elif d%8==0: print(1) else: print(-1) continue h=[[-M]*3 for i in range(10)] for x in range(10): pos=v[x][r] for e in range(pos-1,pos-4,-1): if e<0: break t=G[x][e] if t>=l: h[x][(pos-1-e)]=t result=M for y in range(13,125): z=str(8*y) if '0' in z: continue ans=0 a,b,c=int(z[2]),int(z[1]),int(z[0]) ans+=r-h[a][0] pos1=h[a][0] k=0 if b==a: k+=1 ans+=r-1-h[b][k] pos2=h[b][k] k=0 if c==a: k+=1 if c==b: k+=1 ans+=r-2-h[c][k] pos3=h[c][k] if pos1