#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
#define INF 0x7FFFFFFF
#define ll long long

int get_ans(string t);
int get_num();

string s,ss,t,tt;
vector<int> a;
int k;

//  [ -1
//  ] -2
//  + -3
//  * -4
//  ^ -5

int main(){
  cin >> ss;
  while(ss!="."){
    k=0;
    cin >> tt;
    s=ss;
    t=tt;
    int num=get_ans(t);
    int ans=0;
    t="0000";
    for(int i=0;i<10000;i++){
      k=0;
      if(get_ans(t)==num){
        ans++;
      }
      t[0]++;
      for(int l=0;l<3;l++){
        if(t[l]>'9'){
          t[l]-=10;
          t[l+1]++;
        }
      }
    }
    cout << num << " " << ans << endl;
    cin >> ss;
  }
}

int get_ans(string t){
  a.assign(s.size(),0);
  for(int i=0;i<(int)s.size();i++){
    if('a'<=s[i]&&s[i]<='d'){
      a[i]=t[s[i]-'a']-'0';
    }
    else{
      switch(s[i]){
        case '[':
          a[i]=-1;
          break;
        case ']':
          a[i]=-2;
          break;
        case '+':
          a[i]=-3;
          break;
        case '*':
          a[i]=-4;
          break;
        case '^':
          a[i]=-5;
          break;
      }
    }
  }
  return get_num();
}


int get_num(){
  if(a[k]>=0){
    k++;
    return a[k-1];
  }
  else if(a[k]==-1){
    k++;
    int x;
    int y;
    switch(a[k]){
      case -3:
        k++;
        x=get_num();
        y=get_num();
        k++;
        return x|y;
        break;
      case -4:
        k++;
        x=get_num();
        y=get_num();
        k++;
        return x&y;
        break;
      case -5:
        k++;
        x=get_num();
        y=get_num();
        k++;
        return x^y;
        break;
    }
  }
  return 0;
}

