classSolution{public:intladderLength(stringstart,stringend,unordered_set<string>&dict){// Note: The Solution object is instantiated only once and is reused by each test case.
if(dict.find(start)==dict.end()){dict.insert(start);}if(dict.find(end)==dict.end()){dict.insert(end);}map<string,bool>maps;maps.clear();maps.insert(map<string,bool>::value_type(start,true));vector<string>strs,strsc;strs.clear();strs.push_back(start);intcount=1;while(true){strsc.clear();count++;for(inti=0;i<strs.size();i++){stringitem=strs[i];for(intj=0;j<item.length();j++){for(charc='a';c<='z';c++){stringtmp=item;if(c!=item[j]){tmp[j]=c;if(dict.find(tmp)!=dict.end()&&maps.find(tmp)==maps.end()){strsc.push_back(tmp);if(tmp==end)returncount;maps.insert(map<string,bool>::value_type(tmp,true));}}}}}if(strsc.size()==0)break;strs.clear();for(inti=0;i<strsc.size();i++){strs.push_back(strsc[i]);}}return0;}};