#include "leetcode.h" class Solution { public: int minMutation(string start, string end, vector &bank) { deque> dqp({{start, 0}}); set s(bank.begin(), bank.end()); vector nucleotides = {'A', 'T', 'G', 'C'}; while (!dqp.empty()) { auto [g, m] = dqp.front(); dqp.pop_front(); if (g == end) return m; for (int i = 0; i < g.size(); ++i) for (char n : nucleotides) { string gm = g; gm[i] = n; if (s.count(gm)) { s.erase(gm); dqp.emplace_back(gm, m + 1); } } } return -1; } }; int main() { Solution obj; string start = "AACCGGTT", end = "AACCGGTA"; vector bank = {"AACCGGTA"}; cout << obj.minMutation(start, end, bank); }