#include <bits/stdc++.h>
using namespace std;
int N, M, K, DistK[200100], Vis[200100], Path[200100];
vector<int> V[200100];
vector<int> Vr[200100];
void Bfs(int s, int *Dist) {
  memset(Vis, 0, sizeof(Vis));
  Vis[s] = 1;
  for (queue<int> q({s}); q.size(); q.pop()) {
    int a = q.front();
    for (int u : Vr[a])
      if (!Vis[u]) {
        Dist[u] = Dist[a] + 1;
        Vis[u] = 1;
        q.push(u);
      }
  }
}
int main() {
  int i;
  scanf("%d%d", &N, &M);
  for (i = 1; i <= M; ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    Vr[b].push_back(a);
    V[a].push_back(b);
  }
  scanf("%d", &K);
  for (i = 1; i <= K; ++i) scanf("%d", &Path[i]);
  Bfs(Path[K], DistK);
  int Mi = 0, Ma = 0;
  for (i = 1; i + 1 <= K; ++i) {
    int A = 0, C = 0;
    for (int u : V[Path[i]]) {
      if (DistK[Path[i]] - 1 == DistK[u]) {
        A++;
        if (Path[i + 1] == u) C = 1;
      }
    }
    if (C)
      Mi += 0;
    else
      Mi += 1;
    if (!C || A > 1) Ma++;
  }
  printf("%d %d\n", Mi, Ma);
}
