#include using namespace std; #include using namespace atcoder; using ll=long long; #define MOD 998244353 using Graph=vector>; #define INF 1000000000 #define MAX 200000 int main(){ int N; string S; cin>>N>>S; if(N==1){ if(S=="?"){ cout<<26<<'\n'; }else{ cout<<0<<'\n'; } return 0; } vector> dp(N,vector(26*26,0)); if(S[0]=='?'&&S[1]=='?'){ for(int a=0;a<26;a++){ for(int b=0;b<26;b++){ if(a==b){ continue; } dp[1][26*a+b]=1; } } }else if(S[0]=='?'){ for(int a=0;a<26;a++){ if(a==S[1]-'a'){ continue; } dp[1][26*a+S[1]-'a']=1; } }else if(S[1]=='?'){ for(int b=0;b<26;b++){ if(S[0]-'a'==b){ continue; } dp[1][26*(S[0]-'a')+b]=1; } }else{ if(S[0]!=S[1]){ dp[1][26*(S[0]-'a')+S[1]-'a']=1; } } for(int i=2;i