public static void Main()
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "dog"));
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "cats"));
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "cut"));
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "cast"));
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "at"));
Console.WriteLine("OneEditApart: " + OneEditApart("cat", "act"));
public static bool OneEditApart(string s, string t)
for (int i = 0; i < Math.Min(s.Length, t.Length); i++)
if (s.Length == t.Length)
return s.Substring(i + 1).Equals(t.Substring(i + 1));
else if (s.Length < t.Length)
return s.Substring(i).Equals(t.Substring((i + 1)));
return t.Substring(i).Equals(s.Substring(i + 1));
return Math.Abs(s.Length - t.Length) == 1;