#include <bits/stdc++.h>
using namespace std;
using Pii = pair<int, int>;
const int kMaxN = 5e4 + 1000 + 5, kC = 26;
int n, m, idx, id[kC][kC], f[kC * kC][kMaxN];
vector<Pii> e[kMaxN];
string s;
void S(int x) {
deque<int> q;
fill(f[x] + 1, f[x] + n + kC * kC, 1e9);
q.push_back(x + n), f[x][x + n] = 0;
for (; q.size();) {
int o = q.front();
q.pop_front();
for (auto [nxt, w] : e[o]) {
if (f[x][o] + w < f[x][nxt]) {
f[x][nxt] = f[x][o] + w;
if (!w) q.push_front(nxt);
else q.push_back(nxt);
}
}
}
}
signed main() {
cin.tie(0)->ios::sync_with_stdio(0);
cin >> s >> m, idx = n = s.size(), s = ' ' + s;
for (int i = 0; i < kC; i++) {
for (int j = 0; j < kC; j++) id[i][j] = ++idx;
}
for (int i = 1; i < n; i++) {
if (i != 1) e[i].push_back({i - 1, 1});
if (i + 1 != n) e[i].push_back({i + 1, 1});
e[i].push_back({id[s[i] - 'a'][s[i + 1] - 'a'], 0});
e[id[s[i] - 'a'][s[i + 1] - 'a']].push_back({i, 1});
}
for (int i = 0; i < kC * kC; i++) S(i);
for (int l, r; m--;) {
cin >> l >> r;
if (l > r) swap(l, r);
int ans = r - l;
for (int i = 0; i < kC * kC; i++) {
ans = min(ans, f[i][l] + f[i][r] - 1);
}
cout << ans << '\n';
}
}