// https://szkopul.edu.pl/problemset/problem/weKRWGa1NgLNHT1WLDo5ohuH/site/?key=statement
#include <bits/stdc++.h>
// Agenci
using namespace std;
#define int long long
constexpr int sizik = 1000 * 1001;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
constexpr int INF = 1000 * 1000 * 1001;
constexpr int NINF = -1000 * 1000 * 1001;
std::vector<int> kra[sizik];
bool agent[sizik];
int dp[sizik][3];
void DFS(int v, int p) {
int D = 0;
std::vector<int> q;
for (const auto& u : kra[v]) {
if (u == p) continue;
DFS(u, v);
D += dp[u][2];
q.push_back(u);
}
if (agent[v]) {
dp[v][0] = D;
dp[v][1] = NINF;
int r = NINF;
for (const auto& u : q) {
r = std::max(r, dp[u][1] - dp[u][2]);
}
dp[v][2] = std::max(D, D + 1 + r);
} else {
int r1 = NINF, r2 = NINF;
std::vector<std::pair<int, int>> vr1, vr2;
for (const auto& u : q) {
int x = dp[u][0] - dp[u][2];
r1 = std::max(r1, x);
vr1.push_back({x, u});
x = dp[u][1] - dp[u][2];
r2 = std::max(r2, x);
vr2.push_back({x, u});
}
std::sort(vr1.begin(), vr1.end(), std::greater<std::pair<int, int>>());
std::sort(vr2.begin(), vr2.end(), std::greater<std::pair<int, int>>());
dp[v][0] = D + 1 + r1;
dp[v][1] = std::max(D, D + 1 + r2);
int m = (int)q.size();
dp[v][2] = std::max(D, dp[v][0]);
if (m == 0) {
;
} else if (m == 1) {
;
} else {
auto y1 = vr1[0];
auto y2 = vr2[0];
if (y1.second == y2.second) {
y2 = vr2[1];
}
dp[v][2] = std::max(dp[v][2], y1.first + y2.first + D + 2);
y1 = vr1[0];
y2 = vr2[0];
if (y1.second == y2.second) {
y1 = vr1[1];
}
dp[v][2] = std::max(dp[v][2], y1.first + y2.first + D + 2);
}
}
}
void solve() {
int n, k;
std::cin >> n >> k;
for (int i = 1; i <= k; i++) {
int a;
std::cin >> a;
agent[a] = true;
}
for (int i = 1; i < n; i++) {
int a, b;
std::cin >> a >> b;
kra[a].push_back(b);
kra[b].push_back(a);
}
DFS(1, 1);
for (int i = 1; i <= n; i++) {
}
int ans = 2 * (n - k) - dp[1][2];
std::cout << ans << '\n';
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}