from bisect import* n,q=map(int,input().split()) s=[*map(int,input())] e=[] for i in range(1000): if i%8==0 and'0'not in str(i): e+=[*map(int,str(i))], idx=[[]for _ in range(10)] for i in range(n): idx[s[i]]+=i, INF=1<<60 bs=[len(idx[i])-1 for i in range(10)] lr=[[*map(int,input().split())]+[i]for i in range(q)] lr.sort(key=lambda x:-x[1]) ans1=[-1]*q for l,r,nq in lr: l-=1 m=min(r-l,3) ans=INF for i in range(1,10): while 0<=bs[i]and idx[i][bs[i]]>=r: bs[i]-=1 for st in e: if m!=len(st): continue p=[0]*10 a=0 pos=r-1 mv=[] for j in range(m): ns=st[~j] k=bs[ns] if 0<=k-p[ns]