public static void Main()
Console.WriteLine("Hello World");
Console.WriteLine(MaximumRemovals("abcabdba", "ab", 5));
public static int MaximumRemovals(string s, string p, params int[] removable)
int r = removable.Length;
int[] map = new int[s.Length];
for(int i = 0; i < s.Length; i++)
for (int i = 0; i < removable.Length; i++)
for (int i = 0; i < s.Length; i++)
Console.Write(map[i] + " - ");
for (int i = 0; i < s.Length && j < p.Length; i++)
if (map[i] >= m && s[i] == p[j])
Console.Write("\n"+"m = " + m + " l = " + l + " r = " + r + " j = " + j);
public static int MaximumRemovals2(string s, string p, params int[] removable)
for (int i = 0; i < p.Length; i++)
b = 1 << (int)(p[i] - 'a');
for (int i = 0; i < s.Length; i++)
b = 1 << (int)(s[i] - 'a');
for (int i = 0; i < removable.Length; i++)
Console.WriteLine("maskS = " + maskS);
maskS ^= (1 << s[removable[i]] - 'a');
Console.WriteLine("maskS = " + maskS);
if ((maskS & maskP) != maskP)
for (int j = 0; j < s.Length; j++)
b = 1 << (int)(s[j] - 'a');
Console.WriteLine("maskP = " + maskP + " maskS = " + maskS + " count = " + countOfDel);