class
GFG
{
static
int
factorial(
int
n)
{
int
fact =
1
;
for
(
int
i =
2
; i <= n; i++)
fact = fact * i;
return
fact;
}
static
int
ncr(
int
n,
int
r)
{
return
factorial(n) / (factorial(r) * factorial(n - r));
}
static
int
countWays(String str)
{
int
freq[]=
new
int
[
26
];
for
(
int
i=
0
;i<
26
;i++)
{
freq[i]=
0
;
}
int
nvowels =
0
, nconsonants =
0
;
int
vplaces, cways, vways;
for
(
int
i =
0
; i < str.length(); i++)
++freq[str.charAt(i) -
'a'
];
for
(
int
i =
0
; i <
26
; i++) {
if
(i ==
0
|| i ==
4
|| i ==
8
|| i ==
14
|| i ==
20
)
nvowels += freq[i];
else
nconsonants += freq[i];
}
vplaces = nconsonants +
1
;
cways = factorial(nconsonants);
for
(
int
i =
0
; i <
26
; i++) {
if
(i !=
0
&& i !=
4
&& i !=
8
&& i !=
14
&& i !=
20
&& freq[i] >
1
) {
cways = cways / factorial(freq[i]);
}
}
vways = ncr(vplaces, nvowels) * factorial(nvowels);
for
(
int
i =
0
; i <
26
; i++) {
if
(i ==
0
|| i ==
4
|| i ==
8
|| i ==
14
|| i ==
20
&& freq[i] >
1
) {
vways = vways / factorial(freq[i]);
}
}
return
cways * vways;
}
public
static
void
main(String []args)
{
String str =
"permutation"
;
System.out.println(countWays(str));
}
}