#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <typename T>
inline bool chkmin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
int gcd(int a, int b) {
  if (a == 0 || b == 0) return max(a, b);
  return gcd(b % a, a);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  string a[2];
  cin >> a[0] >> a[1];
  int len[2] = {(int)(a[0].size()), (int)(a[1].size())};
  int g = gcd(len[0], len[1]);
  set<int> st;
  for (int i = (int)(1); i < (int)(g + 1); ++i) {
    if (g % i == 0) {
      string s = a[0].substr(0, i);
      int f = 0;
      for (int j = (int)(0); j < (int)(len[0]); ++j) {
        string aa = a[0].substr(j, (int)(s.size()));
        if (aa != s) {
          f = 1;
          break;
        }
        j += (int)(s.size()) - 1;
      }
      for (int j = (int)(0); j < (int)(len[1]); ++j) {
        string bb = a[1].substr(j, (int)(s.size()));
        if (bb != s) {
          f = 1;
          break;
        }
        j += (int)(s.size()) - 1;
      }
      if (!f) {
        for (int j = (int)(1); j < (int)(g + 1); ++j) {
          if (len[0] % (i * j) == 0 && (len[1] % (i * j) == 0)) {
            st.insert(i * j);
          }
        }
      }
    }
  }
  cout << (int)(st.size()) << "\n";
  return 0;
}
