#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#define LL long long
#define x first
#define y second
#define mp make_pair
#define DN 250005
using namespace std;
typedef pair<int,int> per;
int n,m,v[DN],ai[4*DN],rz[DN],lst[DN];
vector<per> q[DN];//st,ind
void ins(int vn,int l,int r,int p,int v) {
if(l==r) {
ai[vn]=max(ai[vn],v);
return;
}
int m=(l+r)>>1,fs=(vn<<1);
if(p<=m) ins(fs,l,m,p,v);
else ins(fs+1,m+1,r,p,v);
ai[vn]=max(ai[fs],ai[fs+1]);
}
int qu(int vn,int l,int r,int gl, int gr) {
if(gl<=l && r<=gr) return ai[vn];
if(l==r) return 0;
int m=(l+r)>>1,fs=(vn<<1);
return max(qu(fs,l,m,gl,gr),qu(fs+1,m+1,r,gl,gr));
}
int main() {
//ifstream f("input.txt");
ifstream f("pq.in");
ofstream g("pq.out");
f>>n>>m;
for(int i=1; i<=n; ++i) f>>v[i];
for(int i=0; i<m; ++i) {
int a,b; f>>a>>b;
q[b].push_back(mp(a,i));
}
for(int i=1; i<=n; ++i) {
if(lst[v[i]]) {
//cout<<i<<' '<<lst[v[i]]<<'\n';
ins(1,1,n,lst[v[i]],i-lst[v[i]]);
}
lst[v[i]]=i;
for(auto j:q[i]) rz[j.y]=qu(1,1,n,j.x,i);
}
for(int i=0; i<m; ++i) {
if(rz[i]==0) rz[i]=-1;
cout<<rz[i]<<'\n';
}
}