#include <bits/stdc++.h>
using namespace std;
int n, m, u, v, a[200001], a1[200001], a2[200001], k, p[200001], ansl, ansr,
    dis[200001], p1[200001], ans1[200001], ans2[200001];
void bfs(int i) {
  queue<int> q;
  q.push(i);
  while (!q.empty()) {
    int a3 = a2[q.front()];
    while (a3) {
      if (dis[a[a3]] == 0 || dis[a[a3]] == dis[q.front()] + 1) {
        if (dis[a[a3]] == 0) q.push(a[a3]);
        dis[a[a3]] = dis[q.front()] + 1;
        if (p1[a[a3]]) {
          if (p[p1[q.front()] - 1] == a[a3])
            ++ans1[a[a3]];
          else
            ++ans2[a[a3]];
        }
      }
      a3 = a1[a3];
    }
    q.pop();
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &u, &v);
    a[i] = u;
    a1[i] = a2[v];
    a2[v] = i;
  }
  scanf("%d", &k);
  for (int i = 1; i <= k; i++) {
    scanf("%d", &p[i]);
    p1[p[i]] = i;
  }
  dis[p[k]] = 1;
  bfs(p[k]);
  for (int i = 1; i <= n; i++) {
    if (ans2[i]) {
      ++ansr;
      if (!ans1[i]) ++ansl;
    }
  }
  printf("%d %d", ansl, ansr);
  return 0;
}
