/*I MAY NOT GET THE SUCCESS IMMEDIATELY BUT I WILL GET IT FOR SURE*/ #include #define opt std::ios_base::sync_with_stdio(false) #define I int #define li int32_t #define lli long long #define ulli unsigned long long #define pn printf("\n") #define nl cout<<'\n' #define rep(i,a,b) for(i=a;ib;i--) #define elif else if #define mset(a,b) memset(a,b,sizeof(a)) #define pb push_back #define pob pop_back #define itr iterator #define sz() size() #define szof sizeof #define lb lower_bound #define ub upper_bound #define mp make_pair #define pii pair #define pll pair #define vpi vector #define vpl vector #define F first #define S second #define mod 1000000007 using namespace std; lli Power(lli a,lli b) { lli result=1; while(b) { if(b%2) { result=(result*a)%mod; } b=b>>1; a=(a*a)%mod; } return result; } int main() { opt; lli N,i,j,t,l; cin>>N; lli Q; cin>>Q; string s; cin>>s; if(N==1) { while(Q--) { lli x; cin>>x; if(x==1) { cin>>i>>j; cin>>t; t%=26; rep(l,i,j+1) { s.at(i)+=t; } } else { cin>>i>>j; cout<<'1'; } nl; } } elif(N==2) { while(Q--) { lli x; cin>>x; if(x==1) { cin>>i>>j; cin>>t; t%=26; rep(l,i,j+1) { s.at(i)+=t; } } else { cin>>i>>j; if(i==j) { cout<<'1'; } else { if(s.at(0)==s.at(1)) { cout<<'3'; } } } nl; } } elif(N==3) { cout<<"5\n"; cout<<"1\n"; cout<<"2\n"; cout<<"3\n"; exit(0); } return 0; }