using System.Collections.Generic;
public static void Main()
string word = "abbabbaabbabbaabbabba";
var dictionary = new Dictionary<string, int>();
var longestCommonString = "";
for (int i = 0, l = word.Length - 1; i < word.Length; i++, l--) {
suffix = String.Concat(word[l], suffix);
if (dictionary.ContainsKey(prefix)) {
dictionary[prefix] = dictionary[prefix] + 1;
dictionary.Add(prefix, 1);
if (dictionary.ContainsKey(suffix)) {
dictionary[suffix] = dictionary[suffix] + 1;
dictionary.Add(suffix, 1);
Console.WriteLine(longestCommonString);
if (longestCommonString.Length < prefix.Length && prefix != word) {
longestCommonString = prefix;
if(dictionary.ContainsKey(suffix) && dictionary.ContainsKey(prefix) && dictionary[suffix] > 1 && dictionary[prefix] > 1) {
if (longestCommonString.Length < prefix.Length && prefix != word) {
longestCommonString = prefix;
Console.WriteLine(longestCommonString);
Console.WriteLine(longestCommonString.Length);