#include <iostream>
#include <string>
#include <vector>

#define ADD(x,y) ((x+y)%1000000007)
#define MULT(x,y) ((x*y)%1000000007)

#define MAX_S 100000

int main(void){
  long n, m;
  std::cin >> n >> m;
  std::vector<long> S(n+1), T(m+1);
  for(int i=1; i<=n; i++){
    std::cin >> S[i];
  }
  for(int i=1; i<=m; i++){
    std::cin >> T[i];
  }

  long dp[n+1][m+1] = {};
  for(int j=0; j<=n; j++){
    dp[j][0] = 1;
  }
  for(int i=1; i<=m; i++){
    for(int j=1; j<=n; j++){
      if(S[j] == T[i]){
        for(int k=0; k<=i; k++){
          dp[j][i] = ADD(dp[j][i], dp[j-1][k]);
        }
      }else{
        dp[j][i] = dp[j-1][i];
      }
    }
      }

  long ret = 0;
  for(int i=0; i<=m; i++){
    ret = ADD(ret, dp[n][i]);
  }

  std::cout << ret << std::endl;

  return 0;
}
