#include <iostream>
using namespace std;

int n,m,resztan,resztam;
char znak;
long long int najmncykl;
long long int NWW,gra,i;
long long int kolega[1000001]={};//ile pieniedzy
char wygrana[1000001]={};
long long int calkwygrana[1000001]={};
long long int cykli[10000001]={};

int NWD(int a, long int b)
{
  int pom;
 
    while(b!=0)
  {
      pom = b;
      b = a%b;
      a = pom;  
    }
    return a;
}



int main()
{
  //wczytanie  
  ios_base::sync_with_stdio(0); //zdecydowanie skraca operacje wejscia wyjscia-wylaczenie synchronizacji strumienia
    cin>>n;
    for (i=0;i<=n-1;i++) cin>>kolega[i];
    cin>>m;
    for (i=0;i<=m-1;i++) 
    {cin>>znak;
     if (znak=='W') wygrana[i]=1; else wygrana[i]=-1;
    }
    

//najmniejsza wspolna wielokrotnosc
    NWW=n/NWD(n,m)*m;


// jakie beda bezwzględne (bez uwzględnienia początkowych pieniędzy) wygrane po calym cyklu gier
    do
     {
      resztan=gra%n;resztam=gra%m;
      calkwygrana[resztan]=calkwygrana[resztan]+wygrana[resztam];
      gra++;
     }
    while (gra<NWW);    

// ile cykli grają poszczególni gracze i który gracz kończy w najkrótszym cyklu
    najmncykl=9000000000000000005LL;
    
    
    for (i=0;i<=n-1;i++)
    {
     cykli[i]=(-1)*kolega[i]/calkwygrana[i];if ((cykli[i]>0)&&(cykli[i]<najmncykl)) najmncykl=cykli[i];
    }
    
   
    if (najmncykl!=9000000000000000005LL) 
    
    //ile wszyscy maja po skonczeniu cyklu o jeden mniejszego niż najkrotszy
    {for (i=0;i<=n-1;i++) kolega[i]=kolega[i]+(najmncykl-1)*calkwygrana[i];
    //ostatni cykl
    
    gra=0;
    do
     {
      resztan=gra%n;resztam=gra%m;
      kolega[resztan]=kolega[resztan]+wygrana[resztam];
      gra++;
     }
    while (kolega[resztan]>0);
    
    gra=(najmncykl-1)*NWW+gra;
    cout<<gra;
    } else cout<<-1;
    return 0;
}
