using
System;
class
GFG
{
public
static
bool
isPalindromePossible(String input)
{
char
[] charStr = input.ToCharArray();
int
len = input.Length, i;
int
diffCount = 0;
char
[,] diff =
new
char
[2, 2];
for
(i = 0; i < len / 2; i++)
{
if
(charStr[i] != charStr[len - i - 1])
{
if
(diffCount == 2)
return
false
;
diff[diffCount, 0] = charStr[i];
diff[diffCount++, 1] = charStr[len - i - 1];
}
}
switch
(diffCount)
{
case
0:
return
true
;
case
1:
char
midChar = charStr[i];
if
(len % 2 != 0 &&
(diff[0,0] == midChar ||
diff[0,1] == midChar))
return
true
;
break
;
case
2:
if
((diff[0,0] == diff[1,0] &&
diff[0,1] == diff[1,1]) ||
(diff[0,0] == diff[1,1] &&
diff[0,1] == diff[1,0]))
return
true
;
break
;
}
return
false
;
}
public
static
void
Main(String[] args)
{
Console.WriteLine(isPalindromePossible(
"bbg"
));
Console.WriteLine(isPalindromePossible(
"bdababd"
));
Console.WriteLine(isPalindromePossible(
"gcagac"
));
}
}