An anagram is a word or phrase formed by rearranging the letters of a different word or phrase,...

An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, using all the original letters exactly once. Examples include are = car", "python = typhon", and eleven plus two = twelve plus one". In this question, we will focus on the Anagram Detection Problem (ADP) for words only, given as strings, assuming that the two given strings are of equal length, n, and that they are made up of symbols from the set of 26 lowercase alphabetic characters Our goal is to write a boolean function that will take two strings and return whether they are anagrams. We will consider alternative algorithms for the ADP. (a) (Alternative 1) The first solution algorithm for the ADP checks to see that each character in the first string actually occurs in the second. If it is possible to "checkoff" each character, then the two strings must be anagrams. Checking off a character is accomplished by replacing it with the special Python value "None". 2 Perform trig-O analysis on ADP1. Show your work, i.e., mention the input size, define the elementary operations, compute o, and then provide big-O complexity (i.e., do not just guess big-O). def ADP1 (51,521 32_list - list (32) posl = 0 still_ok - True while posl > print (ADP1' abcxyz',' fedcba'>> 3 (b) (Alternative 2) An alternative approach is provided below. Explain the main logic of ADP2. That is explain clearly what this algorithm is doing, how exactly it is checking whether the two strings are anagrams. Also, guess its big-O complexity and provide an explanation def ADP2 (81, 82): cl - [0] . 26 c2 - [0] . 26 for 1 in range (len (sl)): pos-ord(1111) - ord 'a') cl[pos] - cl[pos] + 1 10 for i in range (len (2): pos - ord(3211) - ordina' c2[pos] - c2[pos] + 1 1 still_ok - True while i