#include #define endl '\n' using namespace std; const int MAXV=3e6+5; struct Node { map children; int cnt; }; int n,q; Node trie[MAXV]; int num=1; void add(string s) { int cur=0; for(int i=0;i=sz-ptr-1) return; cur=0; for(int i=s.size()-1;i>sz-1-ptr;i--) cur=trie[cur].children[s[i]]; for(int i=s.size()-1-ptr;i>=0;i--) { if(trie[cur].children[s[i]]==0) trie[cur].children[s[i]]=num++; cur=trie[cur].children[s[i]]; trie[cur].cnt++; } } int query(string s) { int cur=0; for(int i=0;i>n; for(int i=0;i>s; add(s); } cin>>q; for(int i=0;i>s; int ans=query(s); string s1=s; reverse(s1.begin(), s1.end()); if(s!=s1) ans+=query(s1); cout<