#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 10;
const int INF = 1e12 + 10;
struct node {
  vector<pair<int, int> > m;
  vector<int> p;
};
node segt[4 * MAXN];
vector<int> ax;
int a[MAXN];
int f[MAXN];
int last[MAXN];
void build(int id, int l, int r) {
  if (l == r) {
    segt[id].m.push_back(make_pair(f[l], f[l] - l));
    segt[id].p.push_back(f[l] - l);
    return;
  }
  int mid = (l + r) / 2;
  build(2 * id + 1, l, mid);
  build(2 * id + 2, mid + 1, r);
  for (int i = 0; i < segt[2 * id + 1].m.size(); i++) {
    segt[id].m.push_back(segt[2 * id + 1].m[i]);
  }
  for (int i = 0; i < segt[2 * id + 2].m.size(); i++) {
    segt[id].m.push_back(segt[2 * id + 2].m[i]);
  }
  sort(segt[id].m.begin(), segt[id].m.end());
  segt[id].p.push_back(segt[id].m[0].second);
  for (int i = 1; i < segt[id].m.size(); i++) {
    segt[id].p.push_back(min(segt[id].p[i - 1], segt[id].m[i].second));
  }
}
int get_res(int id, int L, int R, int l, int r) {
  if (L > r || R < l) {
    return INF;
  }
  if (L >= l && R <= r) {
    int z =
        upper_bound(segt[id].m.begin(), segt[id].m.end(), make_pair(r, INF)) -
        segt[id].m.begin() - 1;
    if (z == -1) {
      return INF;
    } else {
      return segt[id].p[z];
    }
  }
  int mid = (L + R) / 2;
  return min(get_res(2 * id + 1, L, mid, l, r),
             get_res(2 * id + 2, mid + 1, R, l, r));
}
int32_t main() {
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    ax.push_back(a[i]);
  }
  sort(ax.begin(), ax.end());
  ax.resize(unique(ax.begin(), ax.end()) - ax.begin());
  for (int i = 0; i < n; i++) {
    a[i] = lower_bound(ax.begin(), ax.end(), a[i]) - ax.begin() + 1;
  }
  fill(f, f + MAXN, INF);
  fill(last, last + MAXN, INF);
  for (int i = 0; i < n; i++) {
    if (last[a[i]] != INF) {
      f[last[a[i]]] = i;
    }
    last[a[i]] = i;
  }
  build(0, 0, n - 1);
  for (int i = 0; i < q; i++) {
    int l, r;
    scanf("%d%d", &l, &r);
    int k = get_res(0, 0, n - 1, l - 1, r - 1);
    if (k > n) {
      k = -1;
    }
    printf("%d\n", k);
  }
}
