#include <iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<cmath>
using namespace std;
set<int>lp[26];
int main()
{
    int n,i,j,k,l;
    string s;
    cin>>n>>s;
    for(i=0;i<n;i++)
    {
        lp[s[i]-'a'].insert(i);
    }
    cin>>k;
    char pi;
    for(i=0;i<k;i++)
    {
        cin>>j;
        if(j==1)
        {#include <iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<cmath>
using namespace std;
set<int>lp[30];
int main()
{
    int n,i,j,k,l;
    string s;
    cin>>n>>s;
    for(i=0;i<n;i++)
    {
        lp[s[i]-'a'].insert(i);
    }
    cin>>k;
    char pi;
    for(i=0;i<k;i++)
    {
        cin>>j;
        if(j==1)
        {
            cin>>l>>pi;
            l--;
            lp[s[l]-'a'].erase(l);
            lp[pi-'a'].insert(l);
        }
        else
        {
            int sum=0,p,q;
            cin>>p>>q;
            p--,q--;
            set<int>::iterator po;
            for(int pp=0;pp<26;pp++)
            {
                po=lp[pp].lower_bound(p);
                if(po!=lp[pp].end())
                    if(*po<=q)
                    sum++;
            }
            cout<<sum<<endl;
        }
    }
    return 0;
}

            cin>>l>>pi;
            l--;
            lp[s[l]-'a'].erase(l);
            lp[pi-'a'].insert(l);
        }
        else
        {
            int sum=0,p,q;
            cin>>p>>q;
            p--,q--;
            set<int>::iterator po;
            for(int pp=0;pp<26;pp++)
            {
                po=lp[pp].lower_bound(p);
                if(po!=lp[pp].end())
                    if(*po<=q)
                    sum++;
            }
            cout<<sum<<endl;
        }
    }
    return 0;
}
