#include <bits/stdc++.h>
using namespace std;
const long long INF = 2e9;
const int maxn = 200000 + 100;
int k;
vector<int> g[maxn];
bool uni[maxn];
long long sz[maxn];
long long ans;
void dfs(int v, int p = 0) {
  sz[v] = uni[v];
  for (int i : g[v])
    if (i != p) {
      dfs(i, v);
      sz[v] += sz[i];
    }
}
void get(int v, int p = 0) {
  for (int i : g[v])
    if (i != p) {
      ans += min((2 * k) - sz[i], sz[i]);
      get(i, v);
    }
}
int main() {
  int n;
  cin >> n >> k;
  for (int i = 0; i < k * 2; i++) {
    int v;
    cin >> v;
    uni[v] = true;
  }
  for (int i = 0; i < n - 1; i++) {
    int t, k;
    cin >> t >> k;
    g[t].push_back(k);
    g[k].push_back(t);
  }
  dfs(1);
  get(1);
  cout << ans;
}
