Intro to Java Classwork: List Keeper, Part 2 Write a Java program named "ListKeeperPart2.java" that has the user enter an unlimited number of words, which should all be stored in an ArrayList of Strings. The user should press the ENTER key after each word, and then press ENTER on a line by itself (with no word) when finished entering words. Make sure the user's final entry (the ENTER key by itself) is not stored in the ArrayList as a "blank" entry. After the user has finished entering words, perform the following two tasks: 1) Remove all duplicate words from the ArrayList, ignoring case. For example, if the list contains "cat" and "Cat" and "CAT" and "cat", your program should remove all but one of the four entries, although it does not matter which of the four remains. 2) Display the (possibly revised) word list back to the user in the same order in which the words were entered by the user, but using all CAPITAL letters. For this assignment, you must keep the 'main' method as sparse as possible, consisting of mostly (or entirely) calls to other methods. Your code for getting the words from the user must be in its own method, the code for removing duplicate words must be in another method, and the code for displaying the words back to the user must be in a third method. Other than the 'Scanner' class, for this program you may not import or use any external methods. And, other than a single Java ArrayList of Strings, you are not allowed to use any global variables in your program. The output of your program should be neat, organized, and easy to understand. As always, all of your code must be your own, written entirely and only by you within your online CodeHS.com account. You must never copy/paste, receive, view, or in any way use code that was created or modified by another person, entity, or artificial intelligence. Advanced Option #1 Add an additional method that is called after the user has finished entering words and the word list has been displayed back to the user using all capital letters. This new method should ask the user to enter an integer representing the maximum number of characters allowed in each word, then remove from the ArrayList every word that contains more characters than the limit just provided by the user, and then display the (possibly revised) list of words using all capital letters. Advanced Option #2 Add an additional method that sorts the words in the ArrayList in ascending order by word length. That is, change the order of the words in the list so that the shortest word comes first, the longest word comes last, and every word in between is ordered accordingly. Within each group of words that has the same number of characters, sort those words alphabetically in ascending order. When done re-ordering the words, display the sorted ArrayList back to the user using all capital letters.