#include #include #include using namespace std; int main() { int n, q; cin >> n >> q; string s; cin >> s; vector> id(n, vector (10, -1)); id[0][s[0] - '0'] = 0; for (int i = 1; i < n; ++i) { id[i] = id[i - 1]; id[i][s[i] - '0'] = i; } int nowcnt[10] = {0}; auto cal = [&](int l, int r, int v) -> int { int ans = 0; for (int i = 0, tmp = v; i < 3; ++i) { if (tmp % 10 == 0) { return (1 << 30); } tmp /= 10; } int val[3] = {1000000, 1000000, 1000000}; for (int i = 0; i < 3; ++i) { int tmp = v % 10, tid = id[r - 1][tmp]; for (int j = 0; j < nowcnt[tmp]; ++j) { if (tid <= 0) return (1 << 30); tid = id[tid - 1][tmp]; } ++nowcnt[tmp]; if (tid < l) { return (1 << 30); } for (int j = 0; j < i; ++j) { if (val[j] < tid) --tid; } val[i] = tid; ans += abs(tid - (r - i - 1)); v /= 10; } return ans; }; while (q--) { int l, r; cin >> l >> r; --l; int ans = 1e9; for (int i = 14; i < 125; ++i) { ans = min(ans, cal(l, r, i * 8)); int v = i * 8; while (v > 0) { nowcnt[v % 10] = 0; v /= 10; } } if (ans >= 1e9) ans = -1; cout << ans << '\n'; } }