Longest common substring
Firstly some style.

Short named variables don't help readability at all. c1, c2, s1, s2 are a bad idea. I know this is just a challenge and not production code but keeping a consistent style is a good habit.

Secondly I would start by using the string.Contains() method. It will find if a specified substring exists and should help clean up some of the code.

In this train of thought I decided to start with all the possible substrings in the first string and then search the list of all strings.

public static IEnumerable&lt;string&gt; LongestCommonSubstrings(List&lt;string&gt; strings)
{
    var firstString = strings.FirstOrDefault();

    var allSubstrings = new List&lt;string&gt;();
    for(int substringLength = firstString.Length -1; substringLength &gt;0; substringLength--)
    {
        for(int offset = 0; (substringLength + offset) &lt; firstString.Length; offset++)
        {
            string currentSubstring = firstString.Substring(offset,substringLength);
            if (!System.String.IsNullOrWhiteSpace(currentSubstring) &amp;&amp; !allSubstrings.Contains(currentSubstring))
            {
                allSubstrings.Add(currentSubstring);
            }
        }
    }

    return allSubstrings.OrderBy(subStr =&gt; subStr).ThenByDescending(subStr =&gt; subStr.Length).Where(subStr =&gt; strings.All(currentString =&gt; currentString.Contains(subStr)));
}


This will also allow us to do a .FirstOrDefault() on the linq and get the largest ( due to the orderby() calls.

(To test I used a static list of strings instead of a file:)

public static void Run()
{
    var input = new List&lt;string&gt;{
        "GATTACA",
        "TAGACCA",
        "ATACA",
    };

    var t = new Stopwatch();
    t.Restart();
    var lcs = LongestCommonSubstrings(input);
    t.Stop();

    Console.WriteLine("All Common substrings: \r\n{0}", string.Join("\r\n", lcs));
    Console.WriteLine("Finished in {0} msec.", t.ElapsedMilliseconds);
    Console.ReadLine();
}


DISCLAIMER: Haven't fully tested the above code. May harm your brain/computer.