Trie structure
import java.util.HashMap;
import java.util.Map;

public class Trie {
	  private TrieNode root;

	  public Trie() {
	    root = new TrieNode();
	    System.out.println("The Trie has been created");
	  }
	  
	  public void insert(String word) {
		  TrieNode current = root;
		  for(int i=0; i < word.length(); i++) {
			  char ch = word.charAt(i);
			  TrieNode node = current.children.get(ch);
			  if(node == null ) {
				  node = new TrieNode();
				  current.children.put(ch, node);
			  }
			  
			  current = node;
			  
		  }
		  current.endOfString = true;
		  System.out.println("Successfully inserted "+word+" in Trie");
	  }
	
	
}



class TrieNode {
	  Map<Character, TrieNode> children;
	  boolean endOfString;

	  public TrieNode() {
	    children = new HashMap<>();
	    endOfString = false;
	  }
	}