#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
vector<int> needed;
int totalMoves = 0;
// returns true if subtree contains special/needed node
bool dfs(int node, int parent) {
bool has = needed[node];
for (int nxt : adj[node]) {
if (nxt == parent) continue;
if (dfs(nxt, node)) {
totalMoves += 2;
has = true;
}
}
return has;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, k;
cin >> N >> k;
vector<int> S(k);
for (int &x : S) cin >> x;
adj.assign(N + 1, {});
needed.assign(N + 1, 0);
for (int i = 0; i < N - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
// Mark S as needed
for (int x : S) needed[x] = 1;
// Force root (1) as needed
needed[1] = 1;
totalMoves = 0;
dfs(1, 0);
cout << totalMoves << "\n";
return 0;
}
/*8 2
5 6
1 2
2 5
2 3
2 6
1 4
4 7
7 8
*/
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHZlY3RvcjxpbnQ+PiBhZGo7CnZlY3RvcjxpbnQ+IG5lZWRlZDsKaW50IHRvdGFsTW92ZXMgPSAwOwoKLy8gcmV0dXJucyB0cnVlIGlmIHN1YnRyZWUgY29udGFpbnMgc3BlY2lhbC9uZWVkZWQgbm9kZQpib29sIGRmcyhpbnQgbm9kZSwgaW50IHBhcmVudCkgewogICAgYm9vbCBoYXMgPSBuZWVkZWRbbm9kZV07CiAgICBmb3IgKGludCBueHQgOiBhZGpbbm9kZV0pIHsKICAgICAgICBpZiAobnh0ID09IHBhcmVudCkgY29udGludWU7CiAgICAgICAgaWYgKGRmcyhueHQsIG5vZGUpKSB7CiAgICAgICAgICAgIHRvdGFsTW92ZXMgKz0gMjsKICAgICAgICAgICAgaGFzID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gaGFzOwp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE4sIGs7CiAgICBjaW4gPj4gTiA+PiBrOwoKICAgIHZlY3RvcjxpbnQ+IFMoayk7CiAgICBmb3IgKGludCAmeCA6IFMpIGNpbiA+PiB4OwoKICAgIGFkai5hc3NpZ24oTiArIDEsIHt9KTsKICAgIG5lZWRlZC5hc3NpZ24oTiArIDEsIDApOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTiAtIDE7IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIC8vIE1hcmsgUyBhcyBuZWVkZWQKICAgIGZvciAoaW50IHggOiBTKSBuZWVkZWRbeF0gPSAxOwoKICAgIC8vIEZvcmNlIHJvb3QgKDEpIGFzIG5lZWRlZAogICAgbmVlZGVkWzFdID0gMTsKCiAgICB0b3RhbE1vdmVzID0gMDsKICAgIGRmcygxLCAwKTsKCiAgICBjb3V0IDw8IHRvdGFsTW92ZXMgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Ci8qOCAyCjUgNgoxIDIKMiA1CjIgMwoyIDYKMSA0CjQgNwo3IDgKKi8=