// C# program for computing terms of A284125 List<long> A284125 = new List<long>(); string s, s2, s3; long max; int k; int count; A284125.Add(0); A284125.Add(0); for (int n = 3; n < int.MaxValue; n++) { rd.N = n; max = (long)Math.Pow(2, n - 1); // Inverting gives double count count = 0; for (long i = 0; i < max; i++) { s = Convert.ToString(i, 2).PadLeft(n, '0'); // Make binary with length n s2 = s.Substring(s.Length - 2); // suffix size 2 s3 = s.Substring(s.Length - 3); // suffix size 3 s = s.Remove(s.Length - 1); // Remove last digit // Try size 3 k = s.IndexOf(s3); if (k >= 0) continue; // suffix of size 3 occurs twice, not counted // Try size 2 k = s.IndexOf(s2); if (k >= 0) { // Two occurrences, count it count++; } } A284125.Add(2 * count); }