import
java.io.*;
import
java.lang.*;
import
java.util.*;
class
GFG {
static
boolean
isPrime(
int
n)
{
if
(n <=
1
)
return
false
;
if
(n <=
3
)
return
true
;
if
(n %
2
==
0
|| n %
3
==
0
)
return
false
;
int
i =
5
;
while
(i * i <= n) {
if
(n % i ==
0
|| n % (i +
2
) ==
0
)
return
false
;
i = i +
6
;
}
return
true
;
}
static
int
[] rotateElement(
int
n)
{
String strN = Integer.toString(n);
int
maxPrime = -
1
;
int
cost =
0
;
String temp = strN;
for
(
int
i =
0
; i < strN.length(); i++) {
if
(isPrime(Integer.parseInt(temp))
&& Integer.parseInt(temp) > maxPrime) {
maxPrime = Integer.parseInt(temp);
cost = i;
}
temp = temp.substring(
1
) + temp.charAt(
0
);
}
int
optEle = maxPrime;
if
(optEle == -
1
) {
optEle = Integer.MAX_VALUE;
temp = strN;
for
(
int
i =
0
; i < strN.length(); i++) {
if
(Integer.parseInt(temp) < optEle) {
optEle = Integer.parseInt(temp);
cost = i;
}
temp = temp.substring(
1
) + temp.charAt(
0
);
}
optEle *= (-
1
);
}
return
new
int
[] { optEle, cost };
}
static
void
getMaxSum(
int
arr[])
{
int
maxSum =
0
, cost =
0
;
for
(
int
x : arr) {
int
ret[] = rotateElement(x);
int
optEle = ret[
0
], optCost = ret[
1
];
maxSum += optEle;
cost += optCost;
}
System.out.println(
"Difference = "
+ maxSum +
" , "
+
"Count of operations = "
+ cost);
}
public
static
void
main(String[] args)
{
int
arr[] = {
541
,
763
,
321
,
716
,
143
};
getMaxSum(arr);
}
}