#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
bool vis[maxn];
long long cnt[maxn];
vector<int> vec[maxn];
long long ans;
int n, k;
void dfs(int now, int pre) {
  if (vis[now]) cnt[now] = 1;
  for (int i = 0; i < vec[now].size(); i++) {
    int v = vec[now][i];
    if (v == pre) continue;
    dfs(v, now);
    cnt[now] += cnt[v];
  }
  ans += min(2 * k - cnt[now], cnt[now]);
}
int main() {
  cin >> n >> k;
  for (int i = 1; i <= 2 * k; i++) {
    int x;
    cin >> x;
    vis[x] = true;
  }
  for (int i = 1; i <= n - 1; i++) {
    int u, v;
    cin >> u >> v;
    vec[u].push_back(v);
    vec[v].push_back(u);
  }
  dfs(1, -1);
  cout << ans << endl;
  return 0;
}
