Problem: Ilya the Lion wants to help all his friends with passing exams. They need to solve the following problem to pass the IT exam.

You've got string s = s1s2... sn (n is the length of the string), consisting only of characters "." and "#" and m queries. Each query is described by a pair of integers li, ri (1 ≤ li < ri ≤ n). The answer to the query li, ri is the number of such integers i (li ≤ i < ri), that si = si + 1.

Ilya the Lion wants to help his friends but is there anyone to help him? Help Ilya, solve the problem.

Input

The first line contains string s of length n (2 ≤ n ≤ 105). It is guaranteed that the given string only consists of characters "." and "#".

The next line contains integer m (1 ≤ m ≤ 105) — the number of queries. Each of the next m lines contains the description of the corresponding query. The i-th line contains integers li, ri (1 ≤ li < ri ≤ n).

Output

Print m integers — the answers to the queries in the order in which they are given in the input.

Examples

Input

......
4
3 4
2 3
1 6
2 6


Output

1
1
5
4


Input

#..###
5
1 3
5 6
1 5
3 6
3 4


Output

1
1
2
2
0

Solution (in JAVA):

Solution:
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.*;
import java.util.Scanner;
public class Solution {
    static Scanner sc = new Scanner(System.in);
    static PrintWriter pw = new PrintWriter(System.out);
    public static void solve(int c, String str, int m){
        int[] ans = new int[str.length()];
        ans[0] = 0;
        for (int i = 1; i < str.length(); i ++){
            if (str.charAt(i) == str.charAt(i - 1)){
                ans[i] = ans[i - 1] + 1;
            } else {
                ans[i] = ans[i - 1];
            }
        }
        for (int i = 0; i < m; i ++){
            int l = sc.nextInt() - 1;
            int r = sc.nextInt() - 1;
            pw.println(ans[r] - ans[l]);
        }
    }

    public static void main(String[] args) {
        int t = 1;
        for (int i = 0; i < t; i ++){
            String str = sc.next();
            int m = sc.nextInt();
            solve(i + 1, str, m);
        }
        pw.close();
    }
}










//    public static void floodfill(char[][] arr, boolean[][] visited, int row, int col){
//        visited[row][col] = true;
//        if (row != 0){
//            if (arr[row - 1][col] == '#' && !visited[row - 1][col]){
//                floodfill(arr, visited, row - 1, col);
//                visited[row - 1][col] = true;
//            }
//        }
//        if (row != arr.length - 1){
//            if (arr[row + 1][col] == '#' && !visited[row + 1][col]){
//                floodfill(arr, visited, row + 1, col);
//                visited[row + 1][col] = true;
//            }
//        }
//        if (col != 0){
//            if (arr[row][col - 1] == '#' && !visited[row][col - 1]){
//                floodfill(arr, visited, row, col - 1);
//                visited[row][col - 1] = true;
//            }
//        }
//        if (col != arr[0].length - 1){
//            if (arr[row][col + 1] == '#' && !visited[row][col + 1]){
//                floodfill(arr, visited, row, col + 1);
//                visited[row][col + 1] = true;
//            }
//        }
//    }