Java solution
```class MagicDictionary {\n    List myList;\n\n    public MagicDictionary() {\n        myList = new LinkedList();\n    }\n    \n    public void buildDict(Strin
```class MagicDictionary {\n    List<String> myList;\n\n    public MagicDictionary() {\n        myList = new LinkedList<String>();\n    }\n    \n    public void buildDict(String[] dictionary) {\n        for(int i =0; i < dictionary.length; i++)\n        {\n            myList.add(dictionary[i]);\n        }\n    }\n    \n    public boolean search(String searchWord) {\n        for(int i =0; i < myList.size(); i++)\n        {\n            if(myList.get(i).length() == searchWord.length())\n            {\n                int count = 0;\n                String s = myList.get(i);\n                int j = 0;\n                for(int t =0; t < s.length(); t++)\n                {\n                    if(s.charAt(t) != searchWord.charAt(j)){\n                        count++;\n                    }\n                    j++;\n                }\n                if(count == 1) return true;\n            }\n        }\n        return false;\n    }\n}\n\n/**\n * Your MagicDictionary object will be instantiated and called as such:\n * MagicDictionary obj = new MagicDictionary();\n * obj.buildDict(dictionary);\n * boolean param_2 = obj.search(searchWord);\n */
[]