Яндекс Алгоритмы и задачка B. Фактор палиндромности
Решаю задачку, которая была предложена на Яндекс Algorithm, Practice round. Задачка B. Фактор палиндромности. Ниже представлено мое решение, но на тесте №5 Яндекс выдает, что решение неверное. Не могу разобраться, что я не учел. Буду благодарен за помощь.
class Program
{
static void Main(string[] args)
{
var input = Console.ReadLine();
if (FindMinPalindrom2(input, out var res) == 0)
{
Console.WriteLine(res);
}
else
{
Console.WriteLine("-1");
}
}
static int FindMinPalindrom2(string input, out string best)
{
var substr2 = new HashSet<string>();
best = null;
for (int i = 1; i < input.Length; i++)
{
var str = input.Substring(i - 1, 2);
if (IsPalindrome(str) && !substr2.Contains(str))
substr2.Add(str);
if (i > 1)
{
str = input.Substring(i - 2, 3);
if (IsPalindrome(str) && !substr2.Contains(str))
substr2.Add(str);
}
}
if (substr2.Count > 0)
{
foreach (var str in substr2)
{
best = best is null ? str : Min(str, best);
}
return 0;
}
else
{
return -1;
}
}
static bool IsPalindrome(string input)
{
for(int i = 0; i < input.Length; i++)
if (input[i] != input[input.Length - i - 1])
return false;
return true;
}
static string Min(string a, string b)
{
if (a.Length < b.Length && b.Substring(0, a.Length) == a)
{
return a;
}
for (int i = 0; i < Math.Min(a.Length, b.Length); i++)
{
if (a[i] > b[i])
return b;
if ((a[i] < b[i]))
return a;
}
return b;
}
}