#include<bits/stdc++.h>
using namespace std;
int mod=998244353;
const int m=1e6;
long long a[m];
void solve(){
//int a[m];
a[0]=1;
a[1]=1;
for(int i=2;i<m;i++){
a[i]=(a[i-1]*i)%mod;
}
}
int main(){
int t;
cin>>t;
solve();
while(t--){
string s;
cin>>s;
int n=s.size();
long long cnt=1,cnt1=1;
vector<int>v;
for(int i=0;i<s.size()-1;i++){
if(s[i]==s[i+1])cnt++;
if(s[i]!=s[i+1]){
if(cnt>1) v.push_back(cnt);
cnt=1;
}
}
v.push_back(cnt);
long long sum=0,type=1;
for(int i=0;i<v.size();i++){
sum+=(v[i]-1);
type=(type*v[i])%mod;
}
type=(type*a[sum])%mod;
cout<<sum<<" "<<type<<endl;
/* long long n;
cin>>n;
long long a[n];
long long b[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cin>>b[i];
}
sort(a,a+n);
sort(b,b+n);
int sum1=0,sum2=0;
for(int i=0;i<n;i++){
sum1+=a[i];
sum2+=b[i];
}
sum1=sum1+n*b[0];
sum2=sum2+n*a[0];
cout<<min(sum1,sum2)<<endl;
bool flag =false;
for(int i=1;i<n;i++){
if(a[i][0]>=a[0][0]&&a[i][1]>=a[0][1])flag=true;
}
if(flag){
cout<<-1<<endl;
}
else{
cout<<a[0][0]<<endl;
}*/
}
return 0;
}
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |